Comment ajouter conditionnelle où l'une des clauses dans les rails

Je suis un rails de débutant et suis en train d'effectuer une recherche sur une table avec des rails, et je suis juste en utilisant mes connaissances sql pour ce faire. Mais cela ne semble pas comme des rails ou ruby même...

Est-il une meilleure façon de faire ce que je fais ci-dessous? (en gros, seulement passer la date d'arguments pour sql si elles sont remplies)

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

MODIFIER

de l'utilisateur.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

conteneur.rb

belongs_to :label
belongs_to :place
belongs_to :user

étiquette.rb

belongs_to :user
has_many :containers

En fait, je cherche à obtenir un décompte du nombre de conteneurs à l'intérieur d'un utilisateur, d'étiquettes ou d'une relation directe, par endroit, et que vous voulez être en mesure de filtrer par dates de début et fin.

Soit de cette date peut être nul, et donc j'aurais besoin de traiter de cette question dans ma "requête".

Ma question est : Comment puis-je faire les rails? J'ai pris un coup d'oeil à http://guides.rubyonrails.org/active_record_querying.html et je pourrais peut-être utiliser à l'exception de la commande de quelque part par là...mais ce modèle de la relation semble un peu complexe à faire avec ActiveRecord...comment peut-je?, je pense vraiment que je devrais utiliser ActiveRecord, mais comment?

Merci

[voici un bon exemple de la façon de faire des jointures avec active record][1] [1]: stackoverflow.com/questions/764538/...
Bonjour, mon problème n'est pas avec les jointures...je n'ai même pas l'écrire, car ils ne sont pas pertinentes. Mon truc est conditionnelle paramètres de recherche
Je pense que ce que Bob essaie de dire c'est: pourquoi ne pas utiliser les Actifs de l'Enregistrement au lieu d'écrire directement en haut SQL? guides.rubyonrails.org/active_record_querying.html

OriginalL'auteur MrWater | 2012-07-27