Rails - отношение «многие ко многим» - проблема с данными? - PullRequest
1 голос
/ 19 ноября 2010

У меня довольно интересный вопрос о взаимоотношениях «многие ко многим», которые я создал, и получении правильных данных от ребенка.

То, что у меня есть, это 2 Модели, одна называется Заказ, а другая Статус. У меня есть миграция с именем CreateOrdersStatuses для объединения двух таблиц.

В консоли ruby ​​у меня возникают трудности с передачей информации о ребенке через родителя, например:

Я присвоил своему первому заказу статус, и консоль выдает следующее сообщение:

ruby-1.9.2-p0 > order.statuses
 => [#<Status id: 1, name: "New", created_at: "2010-11-18 20:19:12", updated_at: "2010-11-18 20:19:12">] 

Однако, на мой взгляд, я пытаюсь отобразить статус заказа, поэтому я пробовал следующее в консоли order.statuses.name - который, как я думал, даст мне отпечаток «New». Вместо этого я могу вытащить «Статус» только при попытке этого. Например:

ruby-1.9.2-p0 > order.statuses.name
=> "Status" 

Я полагаю, что моя проблема связана с синтаксисом при попытке получить название статуса моего заказа? Я могу предоставить модели / миграции при необходимости, я просто думал, что это проблема синтаксиса, так как я новичок:).

Спасибо всем.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2010

Чтобы избежать icky обозначения индекса массива "[0]", вы можете сделать вместо этого:

order.statuses.first.name

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

has_many :statuses
0 голосов
/ 19 ноября 2010

order.statuses.name не вернет «New», потому что order.statuses - это коллекция (вы видите прямоугольные скобки в вашем первом выводе).Так что нет смысла делать order.statuses.name.Например, вы можете сделать order.statuses[0].name.

Тем не менее, order.statuses.name не выдает ошибку, потому что ассоциация на самом деле имеет метод name, который возвращает имя класса ассоциации.В вашем случае класс statuses ассоциации равен Status, поэтому этот метод возвращает «Status».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...