2010-12-03 2 views
1

У меня есть следующие отношения, которые работают в консоли rails, но не при запуске сайта, что я делаю неправильно?Ссылка на принадлежность_и ассоциация ассоциации own_to

class C < ActiveRecord::Base 
    belongs_to :b 
end 

class B < ActiveRecord::Base 
    belongs_to :a 
    has_many :c 

    def title 
    a.title 
    end 
end 

Таблица C имеет внешний ключ к B и B имеет внешний ключ к А.

Это работает в консоли рельсы.

c = C.find(12) 
c.b.title 

Но это не работает, когда я запускаю сайт.

Здесь ошибка я получаю

NoMethodError (undefined method `title' for #<ActiveRecord::Associations::BelongsToAssociation:0x104feb5a0>): 
+0

Получаете ли вы какие-либо сообщения об ошибках, когда используете его на сайте? – 2010-12-03 21:09:32

+0

Вы просто ошиблись в символе `a`? Это должно быть `: a` not` a: ` – Alex 2010-12-03 21:10:01

+0

Я исправил a: typo и добавил фактическую ошибку, которую я получаю. – MHinton 2010-12-03 21:13:17

ответ

-1

мне пришлось повернуть метод название класса B в метод класса, чтобы заставить его работать.

0

HAS_ONE (association_id, опции = {}) Определяет ассоциацию один к одному с другим классом. Этот метод должен использоваться только в том случае, если другой класс содержит внешний ключ. Если текущий класс содержит чужой ключ , вместо этого вы должны использовать belongs_to . См. Также ActiveRecord :: Ассоциации :: ClassMethods's обзор о том, когда следует использовать has_one и , когда использовать принадлежит_to.

3

Вместо определения способа для этого, delegate! В app/models/c.rb:

delegate :title, :to => :b 

, а затем в app/models/b.rb:

delegate :title, :to => :a 
Смежные вопросы