Ссылка принадлежит_Вот ассоциации принадлежащего ассоциации

StackOverflow https://stackoverflow.com/questions/4349892

Вопрос

У меня есть следующие отношения, которые работают на консоли 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 и при использовании принадлежат_то.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top