我有一个选项下拉列表,目前从问题数据库中选择所有“类别”。即,有100个问题和5个类别,因此每个类别有20个问题。
如果当前用户不是管理员,则会为他们分配一个类别。
如何将选择限制为仅指定的类别问题?
我认为我可以从视图中轻松完成此操作,但是从控制器/模型做起来不是更好吗?
答案 0 :(得分:2)
这绝对是更适合控制器/模型级别的东西。在我的书中,在前端做安全是一个很大的禁忌。你想要这样的东西:
控制器:
@categories = Category.editable_by(current_user)
模型
def self.editable_by(user)
user.admin? ? all : scoped_to(user)
end
private
def scoped_to(user)
where(category_id: user.category_id)
end
不确定你的架构是什么样子......但是那个棒球场应该做的事情。
编辑:在这种情况下不确定,但scoped_to可能需要def self.scoped_to。我忘了它如何与私有范围一起使用。