В настоящее время я пытаюсь включить атрибуты в API моего приложения Rails. Вариант использования прост. У меня есть модель пользователя:
class User < ActiveRecord::Base
attr_accessible :email
end
У меня есть другая модель, в основном связывающая пользователей с событием:
class UserEvent < ActiveRecord::Base
belongs_to :user
belongs_to :event
end
Я хочу иметь возможность перечислять всех пользователей, связанных с событием, используя модель UserEvent через API, доступный как JSON или XML, и я хотел бы, чтобы электронная почта моего UserEvent отображалась как в дампе XML, так и в JSON.
Этот вопрос говорит о том, что я могу просто переопределить serialiable_hash, ну, похоже, это работает только для JSON, так как похоже, что serializable_hash не используется to_xml
Другой подход, который я исследовал, заключался в переопределении метода атрибутов в моем классе:
class UserEvent < ActiveRecord::Base
def attributes
@attributes = @attributes.merge "email" => self.email
@attributes
end
end
Это хорошо работает для JSON, но выдает ошибку при попытке XML-версии:
undefined method `xmlschema' for "2011-07-12 07:20:50.834587":String
Эта строка оказывается атрибутом "creation_at" моего объекта. Похоже, я что-то не так делаю с хэшем, которым я здесь манипулирую.