phr*_*ron 9 strong-parameters ruby-on-rails-4
假设用户模型使用带有strong_parameters的Rails4.
class User < ActiveRecord::Base
has_secure_password
accepts_nested_attributes_for :identity
// rest of code omitted for brevity
end
Run Code Online (Sandbox Code Playgroud)
如果我参考指南我应该能够做到
def user_params
params.require(:user).permit(:email, identity_attributes: [])
end
Run Code Online (Sandbox Code Playgroud)
允许每个identity_attribute的mass_assignment,无论其名称或编号如何.但这是在"未经许可的参数:identity_attributes"中运行的
但是,如果我指定identity_attributes它是有效的
def user_params
params.require(:user).permit(:email, identity_attributes: [:last_name, :first_name])
end
Run Code Online (Sandbox Code Playgroud)
我在Identity中有很多属性,我可以通过User对它们进行mass_assign,而不指定所有属性.
我错过了什么吗?这是一个错误吗?
干杯
d34*_*4n5 21
您必须指定要更新的标识属性,包括:标识实体的标识.
你会有类似的东西:
def user_params
params.require(:user).permit(:email, identity_attributes: [:id, :last_name, :first_name])
end
Run Code Online (Sandbox Code Playgroud)
如果你没有指定:id,Rails将尝试创建一个实体而不是更新它.我使用accepts_nested_attributes_for花了整个周末在一个简单的一对多关系上挣扎,因为我没有在允许的属性中指定id.
| 归档时间: |
|
| 查看次数: |
9295 次 |
| 最近记录: |