我有一個基類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