Sono un principiante di rails e sto cercando di eseguire una ricerca su un tavolo con binari, e sto solo usando la mia conoscenza sql per farlo. Ma questo non sembra nemmeno rotaie o rubino ...Come aggiungere clausole condizionali dove nelle rotaie
C'è un modo migliore per fare quello che sto facendo qui sotto? (Sostanzialmente, passare solo argomenti data sql se sono riempite)
def search(begin_date=nil, end_date=nil)
subject = " and created_at "
if !(begin_date.nil? || end_date.nil?)
where_part = subject + "BETWEEN :begin_date AND :end_date"
else if (begin_date.nil? && end_date.nil?)
where_part = ""
else if(begin_date.nil?)
where_part = subject + " <= :end_date"
else if (end_date.nil?)
where_part = subject + " >= :begin_date"
end
end
end
end
User.joins(places: {containers: {label: :user}}).where("users.id= :user_id "+where_part, user_id: self.id, begin_date:begin_date, end_date:end_date).group(...).select(...)
end
EDIT
user.rb
has_many :containers
has_many :user_places
has_many :places, through: :user_places
has_many :labels
place.rb
has_many :containers
has_many :user_places
has_many :users, through: :user_places
contenitore. rb
belongs_to :label
belongs_to :place
belongs_to :user
label.rb
belongs_to :user
has_many :containers
Fondamentalmente, voglio ottenere un conteggio del numero di contenitori all'interno di etichette di un dato utente o con un rapporto diretto, per ogni posizione, e vogliono essere in grado di filtrare per data di inizio e fine.
Una di queste date può essere nulla, e quindi avrei bisogno di affrontare questo nella mia "query".
La mia domanda è: come posso fare questo il modo rotaie? Ho dato un'occhiata a http://guides.rubyonrails.org/active_record_querying.html e forse potrei usare il comando except qui da qualche parte ... ma questo modello di relazione sembra un po 'complesso farlo con ActiveRecord ... come posso ?, penso davvero che dovrei usare ActiveRecord, ma Come?
Grazie
[qui è un buon esempio di come fare si unisce con record attivo] [1] [1]: http://stackoverflow.com/questions/764538/ruby-on-rails-how -a-join-two-tables –
Ciao, il mio problema non è con i join ... Io non li ho scritti perché non sono rilevanti.La mia cosa è con i parametri di ricerca condizionale – MrWater
@itsalltime - Penso che quello che Bob sta cercando di dire è - perché non usare Active Record invece di scrivere SQL straight-up? http://guides.rubyonrails.org/active_record_querying.html – JasCav