我在表之间尝试polymorphic association
。我的用户模型中有这个。
user.rb
has_many :custom_field_data, as: :customizable
accepts_nested_attributes_for :customizable
custom_field_data.rb
class CustomFieldData < ActiveRecord::Base
belongs_to :customizable, polymorphic: true
belongs_to :custom_field
end
当我尝试在@user
中构建users_controller
这样的属性时:
def new
@user = @current_company.users.build
@customizable = @user.customizable.build
end
它给我一个错误:
NoMethodError (undefined method `customizable' for #<User:0x000000045dbe58>):
app/controllers/users_controller.rb:16:in `new'
当我尝试访问@user.custom_field_data
时,我得到了这个:
*** NameError Exception: uninitialized constant User::CustomFieldDatum
我不知道,我做错了。提前谢谢。
答案 0 :(得分:1)
如果您使用的是gem文件。再次捆绑它
答案 1 :(得分:1)
试试这个:
这个问题是因为你有错误的模型名称(复数),即CustomFieldData,它应该是CustomFieldDatum,因为数据是复数字,而Datum是单数。
所以要修复它,请在用户模型中指定类名和关联。
has_many :custom_field_data, as: :customizable, class_name: 'CustomFieldData'