我正在尝试在我的模型上创建一个范围,将可用结果限制为仅由用户的合作伙伴拥有的结果。但是,当用户是管理员时,我希望所有模型都可用。 这有效,但看起来很愚蠢。什么是正确的rails3表达方式?
scope :accessible_by, proc { |user|
if user.admin?
where("1=1")
else
where(:owner_id => user.partner.id)
end
}
我希望能够做的是进一步选择,例如
@models = MyModel.
accessible_by(current_user).
other_scope.
where(:property => value).
order("another_property desc").
all
答案 0 :(得分:1)
您可以使用all修饰符。
scope :accessible_by, proc { |user|
if user.admin? == false
where(:owner_id => user.partner.id)
end
}