我有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的选项,但它没有帮助。
有人对此有任何想法吗?
感谢。
答案 0 :(得分:5)
谢谢muttonlamb!
我弄明白了这个问题。
一开始,我猜问题是has_many
左右,因为它出现在那里。但事实并非如此。即使我没有定义class_name
,Rails仍然可以找到该类。
稍后我发现一些记录显示type
中的属性Property
未分配值。根本原因是我覆盖了超类的属性!
解决方案:
ActiveRecord::Migration.rename_column :hx_properties , :type, :datatype
答案 1 :(得分:3)
我认为你需要放弃HX::Property
错误消息告诉您它正在尝试在String:Class
的对象上调用主键