我正在尝试创建一个表单来为具有一个billing_information
的模型用户创建新记录。 Billing_information
有一个我希望包含在表单中的属性account_name
。我尝试使用委托方法,但它不起作用。它产生: -
错误:用户的未知属性'billing_information_account_name'。
class User < ActiveRecord::Base
accepts_nested_attributes_for :billing_information
has_one :billing_information, inverse_of: :user
delegate :account_name, to: :billing_information, allow_nil: true
rails_admin do
create do
field :name
field :email
field :billing_information_account_name do
def value
bindings[:object].account_name
end
end
end
end
end
有没有人有更好的解决方案?谢谢。
答案 0 :(得分:1)
可悲的是,在这种情况下,您无法从rails admin获得帮助,但可以这样做。
您必须添加一个新的虚拟字段并在设置器中处理输入。看一下这个例子。
class User < ApplicationRecord
has_one :billing_information, inverse_of: :user
# A getter used to populate the field value on rails admin
def billing_information_account_name
billing_information.account_name
end
# A setter that will be called with whatever the user wrote in your field
def billing_information_account_name=(name)
billing_information.update(account_name: name)
end
rails_admin do
configure :billing_information_account_name, :text do
virtual?
end
edit do
field :billing_information_account_name
end
end
end
您始终可以使用嵌套属性策略创建完整的billing_information,这意味着添加billing_information字段,您将获得一个很好的表单来填充所有信息。