Aider avec une Jointure dans Rails 3
J'ai les modèles suivants:
class Event < ActiveRecord::Base
has_many :action_items
end
class ActionItem < ActiveRecord::Base
belongs_to :event
belongs_to :action_item_type
end
class ActionItemType < ActiveRecord::Base
has_many :action_items
end
Et ce que je veux faire, c'est, pour un événement donné, de trouver tous les éléments d'action qui ont une action type d'élément avec un nom de "toto" (par exemple). Je pense donc que le SQL serait quelque chose comme ceci:
SELECT * FROM action_items a
INNER JOIN action_item_types t
ON a.action_item_type_id = t.id
WHERE a.event_id = 1
AND t.name = "foo"
Quelqu'un peut-il m'aider à le traduire dans un joli active requête d'enregistrement? (Rails 3 - Arel)
Merci!
OriginalL'auteur Adam Albrecht | 2010-11-25
Vous devez vous connecter pour publier un commentaire.
Bien, je pense que j'ai résolu moi-même. Voici ce que j'ai fait
e.action_items.joins(:action_item_type).where(:action_item_types => {:name => "foo"})
J'ai aussi remarqué que si vous passez une Chaîne de caractères, pas un Symbole, pour vos jointures, il ne se forme pas correctement la requête. par exemple, faire de l'Événement.joint(:action_item_type) PAS le Cas.les jointures("action_item_type")
N'cela fonctionne dans Rails4 ?
subscriptions.joins(:plan).where(:plans => { :is_free_trial => true })
retour Unknown column 'plans.is_free_trial' in 'where clause'OriginalL'auteur Adam Albrecht
Euh, pourquoi ne pas définir
et reportez-vous à
?
OriginalL'auteur ruurd
ou (tant que "nom" est un unique nom de la colonne)
OriginalL'auteur Naf Visser