je les modèles suivants:Aide Jointure Rails 3
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 est, pour un événement donné, trouver tous les éléments d'action qui ont un type d'élément d'action avec un nom de "foo" (par exemple). Je pense donc que le SQL irait 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 me aider à traduire cela dans une belle requête d'enregistrement actif? (Rails 3 - Arel)
Merci!
Si vous voulez le rendre encore plus beau, vous pouvez faire 'e.action_items.joins (: action_item_type). Où (: action_item_types => {: name =>" foo "})' – Marc
J'ai aussi remarqué que si vous passez une chaîne, pas un symbole, à vos jointures, elle ne forme pas la requête correctement. par exemple. faire Event.joins (: action_item_type) NOT Event.joins ("action_item_type") – Gayle
Est-ce que cela fonctionne dans Rails4? 'subscriptions.joins (: plan) .where (: plans => {: is_free_trial => true})' renvoyer _Unknown column 'plans.is_free_trial' dans 'where' clause__ – cyrilchampier