Tia*_*ago 2 ruby-on-rails has-one mass-assignment activeadmin
我正在开发一个rails应用程序,其中我有两个模型User和Client.
User由设计支持,负责身份验证,has_one Client并保存给定用户的客户端详细信息.这种关系始终存在,因为我确保Client在创建模型时创建模型User.
对于我正在使用的管理区域ActiveAdmin.现在,当我尝试User通过管理界面创建一个时,我使用这样的表单:
form do |f|
f.inputs :username, :email, :password
f.inputs :name => "Client", :for => :client do |client|
client.inputs :name, :address, ...
end
end
Run Code Online (Sandbox Code Playgroud)
问题是既保存了User也没Client保存,并且页面重新加载了验证错误.我已经检查过rails console,WARNING: Can't mass-assign protected attributes: client_attributes每当我尝试创建一个时都会有一条消息User.
我已经搜索过这个问题并发现为了允许进行质量分配,必须attr_accessible为每个允许进行分配的字段定义.因此,我已将此指令放在Client模型中,用于上述每个字段,并且消息不断出现,从而阻止模型正确保存.
有没有人对此有所了解?
问题不在您的Client模型中,而是在您的User模型中 - 因为这是您尝试创建的主要模型.您需要做的就是添加client_attributes到模型中的attr_accessible属性列表中User,就像日志文件中的错误消息所示,例如:
class User < ActiveRecord::Base
attr_accessible :client_attributes
end
Run Code Online (Sandbox Code Playgroud)
我想你已经有了一个可访问属性列表User.所以只需添加client_attributes到该列表的末尾即可.
您需要对Client模型所做的更改(即添加属性列表attr_accessible)才能实现.如果你愿意,你也可以继续并撤消它.
| 归档时间: |
|
| 查看次数: |
3382 次 |
| 最近记录: |