Rails 3: Дочерняя модель напрямую ссылается на поле в родительском

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

У меня есть набор вложенных моделей, сгруппированный следующим образом, где c — это соединение b и x

b принадлежит a / у a много b, c принадлежит b / у b много c, c принадлежит x / у x много c

В форме я хочу отобразить c.x_name (где x_name находится в таблице x) в следующем вложенном цикле, который идет вниз по a> b > c стороне иерархии

 for b in a.b's 
   for c in b.c's
       c.x_name
  

Я пробовал использовать свою команду show как c.show_x_name(c.id ), а затем помещаем следующее в модель c

 def show_x_name(x_id)
   X.where(:id => x_id)
end
  

Однако я получаю неизвестный ключ (ы): ошибка идентификатора из представления. Изменение ruby в представлении на c.id отображает правильное число.

Это моя первая попытка в Rails 3… чего мне не хватает?

Спасибо!

Комментарии:

1. Дайте вашим моделям разумные имена, a, b, c, x и т.д. Трудно следовать.

Ответ №1:

Ну, я заблудился во всех этих a, b, c и x-es. Но взгляните на руководства

добавьте belongs_to :x в свою c-модель и a has_many :cs в свою x-модель. Тогда вы должны быть в состоянии использовать c.x.name

Но c.x может возвращать nil, если c не имеет отношения к x .

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

И есть ли у вас id атрибут в вашей x-database?

Terw