2016-08-31 25 views
1

我有一个基类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

回答

1

我想我找到了我要找的东西:ActiveRecord::Reflection class methods(以前的答案是有帮助的,但是没有真正回答这个问题)

我用reflect_on_association类的方法来获取我的:target关联的细节。所以为了得到我想找的东西,我做了:

UserEntry.reflect_on_association(:target).klass,它返回User类。

2

你正在做正确的事情,除了class_name应该是一个String,不Class

class UserEntry < Entry belongs_to :target, class_name: 'User' end

+0

不一定是字符串 – Ruslan

0

请确保您设置在belongs_toprimary_keyforeign_key因为AR是没有足够的智慧地图user_id分成target_id