Rails:String的未定义方法`primary_key':Class

时间:2013-03-20 07:08:41

标签: ruby-on-rails activerecord

我有3个类,Schema,Entity和Property,代表数据库设计业务。 Schema-Entity似乎有效,但Entity-Property没有。

class Hx::Entity < ActiveRecord::Base
  belongs_to :schema
  attr_accessible :name
  has_many :properties    ,  class_name: "Hx::Property"  , primary_key: "id"
end

class Hx::Property < ActiveRecord::Base
  attr_accessible :destination, :indexed, :inverse, :isToMany, :kind, :name, :optional, :transient  , :type


  belongs_to :entity
end

当我运行entity_obj.properties时,它会抛出错误undefined method primary_key' for String:Class

我绕过has_many的选项,但它没有帮助。

有人对此有任何想法吗?

感谢。

2 个答案:

答案 0 :(得分:5)

谢谢muttonlamb!

我弄明白了这个问题。

一开始,我猜问题是has_many左右,因为它出现在那里。但事实并非如此。即使我没有定义class_name,Rails仍然可以找到该类。

稍后我发现一些记录显示type中的属性Property未分配值。根本原因是我覆盖了超类的属性!

解决方案:

ActiveRecord::Migration.rename_column :hx_properties , :type, :datatype

答案 1 :(得分:3)

我认为你需要放弃HX::Property

周围的“”

错误消息告诉您它正在尝试在String:Class

的对象上调用主键