2

我正在开发一个 Rails 应用程序,其中有两个模型UserClient. 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

问题是 要么 要么被保存User并且Client页面被重新加载并出现验证错误。我检查了 rails 控制台,WARNING: Can't mass-assign protected attributes: client_attributes每次尝试创建User.

我已经搜索了这个问题,发现为了允许批量分配,必须为允许分配attr_accessible的每个字段定义。因此,我已将此指令放入Client上述每个字段的模型中,并且消息不断出现,从而阻止模型正确保存。

有人对此有任何线索吗?

4

1 回答 1

5

问题不在于您的Client模型,而在于您的User模型 - 因为这是您尝试创建的主要模型。您需要做的就是添加到模型中的属性client_attributes列表中,就像日志文件中的错误消息所说的那样,例如:attr_accessibleUser

class User < ActiveRecord::Base
  attr_accessible :client_attributes
end

我想你已经在User类中有一个可访问属性的列表。所以只需添加client_attributes到该列表的末尾即可。

您对Client模型所做的更改(即向 中添加属性列表attr_accessible)不需要此操作。如果你愿意,你也可以继续并撤消它。

于 2011-09-29T08:22:30.593 回答