我有一个基类Entry
,有很多不同的子类。如:Rails:get belongs_to class_name
class Entry < ActiveRecord::Base
...
end
class UserEntry < Entry
belongs_to :target, class_name: User
end
有没有一种方法来检索target
协会UserEntry类的class_name
?它应该返回User
。
我有一个基类Entry
,有很多不同的子类。如:Rails:get belongs_to class_name
class Entry < ActiveRecord::Base
...
end
class UserEntry < Entry
belongs_to :target, class_name: User
end
有没有一种方法来检索target
协会UserEntry类的class_name
?它应该返回User
。
我想我找到了我要找的东西:ActiveRecord::Reflection class methods(以前的答案是有帮助的,但是没有真正回答这个问题)
我用reflect_on_association
类的方法来获取我的:target
关联的细节。所以为了得到我想找的东西,我做了:
UserEntry.reflect_on_association(:target).klass
,它返回User
类。
你正在做正确的事情,除了class_name
应该是一个String
,不Class
class UserEntry < Entry belongs_to :target, class_name: 'User' end
请确保您设置在belongs_to
的primary_key
和foreign_key
因为AR是没有足够的智慧地图user_id
分成target_id
不一定是字符串 – Ruslan