【发布时间】:2011-09-14 09:45:58
【问题描述】:
如何构建我的 Rails 3.x 应用程序,以便登录的用户只能看到与他所属的组关联的记录?
例如, (足球主题)
想象一下这些模型:
一个团队模型,代表 30 支职业橄榄球队中的每一支。
一个用户模型,使用设计进行身份验证。每个用户都有一个 team_id 关联。
一个 Player 模型,代表 NFL 中的每个球员:name:string, team_id:integer。
每个用户都是主教练,并且应该只能在 player#index 中看到自己的球员。 Rails 知道这一点,因为主教练(用户)有一个与他相关联的 team_id,球员也是如此。
现在,只有两个控制器(团队、玩家),手动重新键入 index 和 CRUD 方法以仅显示 current_user 的关联记录似乎相当容易。
def index
@players = Player.where(current_user.team_id = ?, 'player.team_id')
end
但假设您有 6-10 个控制器: 门票, 交易, 雇员, 合同, ETC..... (都有一个 team_id 关联)
Rails 是否有一种全局方式只显示与 current_user 的团队相关的记录?
还有……Rails 如何防止用户在 URL 中输入随机 ID 以查找与他的 team_id 无关的记录。 (想象一下红皮队教练输入http://www.thesite.com/players/224/edit)并能够编辑一名 player_id = 224 的牛仔队球员。
谢谢。
【问题讨论】:
标签: ruby-on-rails devise associations