Jas*_*rip 11 ruby-on-rails mass-assignment attr-accessible ruby-on-rails-3.1
在阅读了Rails 3.1 API中的attr_accessible后,我发现其中有一个as :admin选项.我想知道两件事.
如果用户有一个admin标志,我的控制器如何告诉我的模型用户是管理员.
如果用户是所有者,我可以:as => owner在我的模型中指定,并且我的控制器如何通知我的模型他们是项目的所有者.
Mic*_*ley 18
没有内置的模型集成; 你在assign_attributes电话中传递角色:
@project.assign_attributes(params[:project], :as => :admin)
Run Code Online (Sandbox Code Playgroud)
该:as参数默认为:default,你可以在任何你想要的符号传递.要将它集成到您的User模型中,您可以为其指定一个属性role,然后执行以下操作:
@project.assign_attributes(params[:project], :as => current_user.role.to_sym)
Run Code Online (Sandbox Code Playgroud)
您还可以使用:without_protection以下方法绕过保护:
@project.assign_attributes(params[:project], :without_protection => true)
Run Code Online (Sandbox Code Playgroud)
以类似的方式,new,create,create!,update_attributes,和update_attributes!方法都尊重大众分配的安全性.关于安全性的Ruby on Rails指南有更多信息.
| 归档时间: |
|
| 查看次数: |
5887 次 |
| 最近记录: |