У меня есть модель учителя который has_many студенты. Когда я представляю студента (как json), я хочу разделить teacher_id свойство и заменить его именем учителя в моем представлении.
Что лучший способ состоит в том, чтобы достигнуть этого?
Удачи,
Chris
Вы всегда можете переопределить метод 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
Обратите внимание, что при использовании такого слияния методом перебора результат иногда бывает менее чем удовлетворительным, но он будет служить для случая по умолчанию. Если вы укажете: methods или: except собственные параметры, значения по умолчанию будут проигнорированы.
Определите метод с именем имя_ учителя
.
class Student < ActiveRecord::Base
def teacher_name
self.teacher.name
end
end
Включите метод teacher_name
при вызове to_json
:
teacher.to_json(:include => {:students => {:methods=> :teacher_name,
:except => :teacher_id
}
}
)