1

我对 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?实现这一目标的“最佳”方法是什么?

谢谢你的帮助 !

4

1 回答 1

2

它应该是这样的:

top = Top.find(top_id)
top.users.includes(:idea_subscriptions).where("idea_subscriptions.done = true")
于 2012-07-13T08:25:41.810 回答