Rails:得到belongs_toclass_name

Rails: get belongs_to class_name

我有一个基础 class Entry,有很多不同的子class。如:

class Entry < ActiveRecord::Base
    ...
end

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

有没有办法检索 UserEntry class 的 target 关联的 class_name?它应该 return User.

你做的是对的,除了class_name应该是String,而不是Class

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

确保在 belongs_to 中设置了 primary_keyforeign_key,因为 AR 不够智能,无法将 user_id 映射到 target_id

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

我使用 reflect_on_association class 方法获取我的 :target 关联的详细信息。所以为了得到我想要的东西,我做了:

UserEntry.reflect_on_association(:target).klass,返回 User class.