我想要 3 个用户组:管理员、经理和工程师。管理员可以查看所有对象,可以更改用户所属的组等等。经理可以看到他的东西和他的工程师的东西。工程师只能看到他自己的东西。问题是在哪里放置所有逻辑:在视图中、控制器中或模型中。我将创建一个会话助手“current_user_right_on(stuff)”并检查视图中的权限:
if current_user_right_on(stuff) == view
show_stuff
if current_user_right_on(stuff) == change
show_edit_controls
end
end
做这些事情的常见方法是什么?经验法则是什么?
更新所以,现在我在控制器中
def index
if logged_in?
if current_user.admin?
@stuff = Stuff.all
else
@stuff = Stuff.stuff_user_can_see(current_user)
end
else
@stuff = Stuff.where( <anyone can see> )
end
end
在模型中,我有方法“stuff_user_can_see(user)”,它从数据库中选择适当的记录。
我应该在这里改进什么?