Некоторое дальнейшее тестирование, в действии контроллера:
format.json { render :json => @country }
А в модели:
class Country < ActiveRecord::Base
has_many :languages
def as_json(options={})
super(
:include => [:languages],
:except => [:created_at, :updated_at]
)
end
end
Выходы:
{
created_at: "2010-05-27T17:54:00Z"
id: 123
name: "Uzbekistan"
updated_at: "2010-05-27T17:54:00Z"
}
Однако явное добавление .to_json () к оператору рендеринга в классе и переопределение to_json в модели (вместо as_json) дает ожидаемый результат. С этим:
format.json { render :json => @country.to_json() }
в моем действии контроллера, и ниже в модели, переопределение работает:
class Country < ActiveRecord::Base
has_many :languages
def to_json(options={})
super(
:include => [:languages],
:except => [:created_at, :updated_at]
)
end
end
Выходы ...
{
id: 123,
name: "Uzbekistan",
languages: [
{id: 1, name: "Swedish"},
{id: 2, name: "Swahili"}
]
}
... что является ожидаемым результатом. Я нашел ошибку? Я выиграю приз?