У меня есть модель с виртуальным атрибутом, который я хотел бы включить, когда модель отображается как JSON. Я сделал это:
def to_json(options={})
options[:methods] ||= [];
options[:methods] << :date_string;
super(options);
end
, который добавляет мой метод date_string
в список атрибутов, которые будут отображаться при создании JSON.
В моем контроллере действие show дает правильный результат, отображая date_string
, как если бы это был обычный атрибут:
def show
@project = Project.find params[:id]
respond_to do |format|
format.html
format.json { render :json => @project }
end
end
но действие index не включает date_string
:
def index
@projects = Project.all
respond_to do |format|
format.html
format.json { render :json => @projects }
end
end
Кто-нибудь знает, возможно ли заставить это работать? Я предполагаю, что он не использует специфичную для модели to_json
при рендеринге коллекции.
Редактировать: Похоже, мне следует использовать as_json
сейчас - я посмотрю, решит ли это это.
Edit2: Я не думаю, что as_json
здесь что-то меняет.