Tam*_*Tam 5 activerecord ruby-on-rails nested-attributes
我有类似的东西:
class Profile < ActiveRecord::Base
belongs_to :user
delegate :full_name, :to => :user
accepts_nested_attributes_for :user
.......
Run Code Online (Sandbox Code Playgroud)
这工作正常,因为我希望配置文件能够在用户中设置first_name和last_name.但是,如果用户在表单中注入其他参数,这会带来安全威胁.
如何使accepts_nested_attributes_for只接受first_name和last_name并删除其他参数?
小智 0
我能想到两种选择,它们实际上与您无需通过 anaf 处理批量分配的方式相同。
Accepts_nested_attributes_for 将尊重用户模型上的 attrs_accessible 。如果您指定某个属性不向用户模型上的批量分配公开,则也无法通过accepts_nested_attributes_for 对其进行分配。
您可以在配置文件控制器中处理卫生问题。将传递给用户模型的属性将位于 params[:profile][:user_attributes] 下。然后,您可以使用 仅slice获取您想要允许的属性,或者使用except删除您不想允许的属性。尽管我更喜欢将允许的属性列入白名单而不是列入黑名单。
选项 1 会影响您为用户模型使用质量分配的任何位置,而选项 2 只会影响通过配置文件控制器传入的参数
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |