我对rails非常陌生,但看到我的进展感觉很好,但是我面对的是第一个真正的复杂模型问题:/
以下是我的模型的样子:
class Top < ActiveRecord::Base
has_many :line_tops, :dependent => :destroy
has_many :ideas, :through => :line_tops
has_many :top_subscriptions
has_many :users, :through => :top_subscriptions
class User < ActiveRecord::Base
has_many :top_suscribtions
has_many :tops, :through => :top_suscribtions
has_many :idea_suscribtions
has_many :ideas, :through => :idea_suscribtions
class IdeaSubscription < ActiveRecord::Base
belongs_to :idea
belongs_to :user
attr_accessible :idea, :user, :done (is a boolean)
我想检索一个顶级,所有已经完成此顶部所有想法(done = true)的用户。 我很失落,因为我真的不知道该怎么办。顶级模型或方法中的新属性?我可以使用活动记录查询界面或我应该使用纯SQL吗? 实现这一目标的“最佳”方式是什么?
感谢您的帮助!
答案 0 :(得分:2)
应该是这样的:
top = Top.find(top_id)
top.users.includes(:idea_subscriptions).where("idea_subscriptions.done = true")