Ссылка принадлежит_Вот ассоциации принадлежащего ассоциации
-
30-09-2019 - |
Вопрос
У меня есть следующие отношения, которые работают на консоли Rails, но не когда я бегу на сайте, что я делаю не так?
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 имеет внешний ключ к A.
Это работает на консоли Rails.
c = C.find(12)
c.b.title
Но это не работает, когда я бегу на сайте.
Вот ошибка, которую я получаю
NoMethodError (undefined method `title' for #<ActiveRecord::Associations::BelongsToAssociation:0x104feb5a0>):
Решение 3
Я должен был включить метод титула класса B в класс, чтобы получить его на работу.
Другие советы
Вместо того, чтобы определить метод для этого, delegate
Действительно В app/models/c.rb
:
delegate :title, :to => :b
А потом внутрь app/models/b.rb
:
delegate :title, :to => :a
has_one (Association_id, Options = {}) Указывает связь с одной к одной с другим классом. Этот метод следует использовать только в том случае, если другой класс содержит внешний ключ. Если текущий класс содержит внешний ключ, то вам следует использовать принадлежать_to. См. Также ActiveReCord :: Ассоциации :: Обзор ClassMethods включен, когда использовать HAS_ONE и при использовании принадлежат_то.