NameError异常:未初始化的常量User :: CustomFieldDatum

时间:2014-04-12 08:57:34

标签: ruby-on-rails ruby ruby-on-rails-4 polymorphic-associations

我在表之间尝试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

我不知道,我做错了。提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果您使用的是gem文件。再次捆绑它

答案 1 :(得分:1)

试试这个:

这个问题是因为你有错误的模型名称(复数),即CustomFieldData,它应该是CustomFieldDatum,因为数据是复数字,而Datum是单数。

所以要修复它,请在用户模型中指定类名和关联。

has_many :custom_field_data, as: :customizable, class_name: 'CustomFieldData'