Небольшой хинт о создании своих типов данных для ActionWebService

Posted on March 04, 2007
Всё очень просто, создаём директорию app/structs и добавляем в environment.rb этот путь для подгрузки. Теперь, допустим у нас есть сервис Article примерно такого вида(article_api):

class ArticleApi < ActionWebService::API::Base
  api_method :get_article, :expects => [:int], :returns => [Article]
  api_method :list_articles, :returns => [[ArticleStructs::ArticleShort]]
end
Теперь создаём файлик app/structs/article_structs.rb в который пишем следующее:

module ArticleStructs
  class ArticleShort < ActionWebService::Struct
    member :id, :integer
    member :header, :string
  end
end
Всё, теперь в контроллере на выдачу мы можем составлять массив из переменных типа ArticleShort