Вы всегда можете переопределить метод to_json в модели, чтобы сделать все, что вы хотите:
class Student < ActiveRecord::Base
def to_json
self.attributes.merge(
'teacher_id' => self.teacher.name
).to_json
end
end
Обновление: На основе отзывов от kandadaboggu , с использованием другого подхода:
class Student < ActiveRecord::Base
def teacher_name
self.teacher and self.teacher.name
end
def to_json(options = { })
super(
{
:methods => :teacher_name,
:except => :teacher_id)
}.merge(options)
)
end
end
Обратите внимание, что при таком грубом слиянии результат иногда оказывается менее чем удовлетворительным, но будет служить для случая по умолчанию. Если вы укажете: методы или: кроме ваших собственных параметров, значения по умолчанию будут игнорироваться.