2016-08-31 3 views
1

У меня есть базовый класс Entry с множеством разных подклассов. Такие, как:Rails: get принадлежит_to class_name

class Entry < ActiveRecord::Base 
    ... 
end 

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

Есть ли способ, чтобы получить class_name в target ассоциации класса UserEntry? Он должен вернуть User.

ответ

1

Я думаю, что нашел то, что искал: ActiveRecord::Reflection методы класса (предыдущие ответы полезны, но делают на самом деле не отвечают на вопрос)

Я использовал метод класса 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

Убедитесь, что вы установили primary_key и foreign_key в belongs_to, потому что AR не достаточно умны, чтобы отобразить user_idtarget_id

Смежные вопросы