Rails 3 ActiveModel :: Сериализаторы, похоже, нуждаются во множестве методов поддержки - PullRequest
0 голосов
/ 26 августа 2010

Я возвращаюсь в RoR после того, как не использовал его в течение нескольких лет, и я пытаюсь использовать ActiveModel для сериализации простого объекта в XML.

Я делаю следующее согласно комментариямв activemodel / lib / activemodel / serialization.rb:

class XmlError

  include ActiveModel::Serializers::Xml

  attr_accessor :code
  attr_accessor :description

  def attributes
    @attributes ||= {'code' => 'nil', 'description' => 'nil'}
  end

  def initialize(error_code)
    @code = error_code
    @description = "blah"
   self
  end
end

Я использую это в контроллере как:

render :xml => XmlError.new("invalid_login")

и получаю следующую трассировку стека:

NoMethodError (неопределенный метод `имя_модели 'для XmlError: Class):

app / controllers / users_controller.rb: 19: в` login'

app / controllers / users_controller.rb:5: в `login '

Если создать метод класса model_name, я получу следующую трассировку стека:

NoMethodError (неопределенный метод` element' для "XmlError": String):

app / controllers / users_controller.rb: 19: в` login '

app / controllers / users_controller.rb: 5: в `login'

Такое чувство, что я гоняюсь за своим хвостом здесь.Я только что пропустил что-то простое в своем классе?Я внимательно следовал примеру.

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

extend ActiveModel::Naming

- это то, что вы ищете.

http://rdoc.info/github/lifo/docrails/master/ActiveModel/Naming

0 голосов
/ 26 августа 2010

Почему бы не подкласс ActiveModel :: Base?

...