2014-01-06 6 views
0

У меня есть два класса, как это:Rails названные отношения с именем того же класса

class User < ActiveRecord::Base 
    has_one :my_user, class_name: 'My:User' 
end 

class Mynamespace::User < ActiveRecord::Base 
    belong_to :user 
end 

Проблема здесь состоит в том, что из User я могу получить my_user объект по User.find(1).my_user, а не наоборот:

Mynamespace::User.find(1).user концы выше получать я такой же My:User объект.

Я также пробовал это, но это тоже не работает.

class Mynamespace::User < ActiveRecord::Base 
    belong_to :user_parent, :class_name => 'User', :foreign_key => 'user_id' 
end 

Любой совет? Заранее спасибо!

+1

У вас действительно был класс «Мой: Пользователь» или его просто типичная ошибка.? или его предполагается быть MyUser? – Pavan

+0

опубликуйте свою схему – shiva

+1

У вас нет класса под названием «Мой: Пользователь». Это синтаксическая ошибка. Отправьте свой реальный код. Кроме того, почему у вас есть метки с Rails 3 и Rails 4? Это взаимоисключающие теги. – meagar

ответ

1

Используйте ::User для ссылки на модель в корневом пространстве имен.

class Mynamespace::User < ActiveRecord::Base 
    belong_to :user, class_name: '::User' 
end 
+0

Спасибо! Это именно то, что я хотел! – interskh

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