我是 ROR 的新手,我正在尝试了解范围。在我当前的实现中,我正在获取所有处理器并将其显示在视图中。
class ProcessorsController
def index
@processors = Processor.all
end
end
我想修改它,以便我只能获取用户为 admin 的处理器。我的关系就是这样建立起来的。
class Processor
belongs_to :feed
#SCOPES (what I have done so far)
scope :feed, joins(:feed)
scope :groups, joins(:feed => :groups).join(:user).where(:admin => true)
end
class Feed < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :groups
scope :admin, where(:admin => true)
end
我能够在我的撬动中做到这一点
pry(main)> Processor.find(63).feed.groups.first.user.admin?
PS:有人可以提供一些很好的资源,如果关系很复杂,我可以学习如何使用范围。