У меня есть следующий код
@asset = Asset.first(
:include => [
:asset_statuses => [
:asset_status_name,
{:asset_location => [
{:asset_floor => :asset_building}
]}
],
:asset_type => [
:asset_category => :asset_department
]
],
(вероятно, не лучший дизайн Таблицы базы данных, но это - то, что я должен использовать),
Asset.first
работы правильно и это возвращает данные правильно, но когда я пытаюсь использовать то же :include
в to_json
метод это перестало работать с ошибкой followings:
@asset.to_json(
:include => [
:asset_statuses => [
:asset_status_name,
{:asset_location => [
{:asset_floor => :asset_building}
]}
],
:asset_type => [
:asset_category => :asset_department]
]
)
NoMethodError (undefined method `macro' for nil:NilClass):
to_json
метод имеет то же :include
синтаксис, как находят; я не понимаю, почему это не работает.
В случае, если кто-то еще столкнется с причудливой проблемой, связанной с моей проблемой ... to_json
также вернет эту ошибку, когда вы попытаетесь включить ассоциацию, которая не определена в модели.
Я думаю, что синтаксис to_json
: include немного отличается.
Обычно я использую
@asset.to_json(:include => { :asset_statuses => {
:include => :asset_status_name}})
(и начинаю с небольшого, затем добавляю все остальное. Раздражающая схема!)