ruby-on-rails-4 – 嵌套属性的强参数在空数组时返回“未准许的参数”

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-4 – 嵌套属性的强参数在空数组时返回“未准许的参数”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_1@假设一个用户模型
使用Rails4和strong_parameters.
假设一个用户模型
class User < ActiveRecord::Base
  has_secure_password

 accepts_nested_attributes_for :identity

//  rest of code omitted for brevity
end

如果我参考指南,我应该能够做到

def user_params
    params.require(:user).permit(:email,identity_attributes: [])
end

允许对每个identity_attributes进行mass_assignment的任何名称或号码.但是这个运行在一个“未经许可的参数:identity_attributes”

但是如果我指定了identity_attributes它是有效的
def user_params
params.require(:user).permit(:email,identity_attributes:[:last_name,:first_name])
结束

我在身份中有很多属性,我可以通过用户对它们进行mass_assign,而不指定它们.

我错过了什么吗?这是一个bug吗?

干杯

解决方法

您必须指定要更新的身份属性,包括身份实体的:id.

你会有这样的东西:

def user_params 
  params.require(:user).permit(:email,identity_attributes: [:id,:last_name,:first_name]) 
end

如果不指定:id,则Rails将尝试创建一个实体,而不是更新它.我花了所有的周末挣扎在一个简单的一对多关系使用accept_nested_attributes_for因为我没有指定允许的属性的id.

猜你在找的Ruby相关文章