act_as_api неопределенная локальная переменная с ActiveModel::Model

у меня есть эта ActiveModel в моем приложении rails 4.

class MyModeltest
    include ActiveModel::Model
    acts_as_api
    attr_accessor :title, :content

    api_accessible :public do |template|
        template.add :title
        template.add :content
    end
end

я вызываю эту модель из моего контроллера, и это возвращает ошибку:

неопределенная локальная переменная или метод `acts_as_api' для...

Итак, можно ли вызывать act_as_api в ActiveModel? если да, не могли бы вы показать мне, как это сделать?

заранее спасибо

Чтобы быть более ясным, моя проблема не со статической переменной act_as_api, а с геммом «acts_as_api», который не распознается ActiveModel.


person Andrea Mucci    schedule 11.10.2013    source источник


Ответы (2)


Я автор act_as_api.

Если вы хотите использовать его с классом, отличным от ActiveRecord, вы должны расширить свой класс с помощью extend ActsAsApi::Base.

В вашем случае это будет

class MyModeltest
  include ActiveModel::Model
  extend ActsAsApi::Base
  acts_as_api
  attr_accessor :title, :content

  api_accessible :public do |template|
    template.add :title
    template.add :content
  end
end

Вы можете найти пример в вики:

https://github.com/fabrik42/acts_as_api/wiki/Declaring-api-templates-for-any-class%21-%28no-orms%29

Если вам нужна дополнительная помощь, просто дайте мне знать. :)

person chris_b    schedule 12.10.2013
comment
Привет @chris_b, спасибо за ответ, это работает как шарм. я разместил еще один вопрос об act_as_api, это ссылка , не могли бы вы помочь мне? - person Andrea Mucci; 14.10.2013

Если вы хотите использовать константы внутри модели, вам придется сделать это в верхнем регистре, а также инициализировать его. Определите это как

class MyModeltest
    include ActiveModel::Model
    ACTS_AS_API = false
    attr_accessor :title, :content

    api_accessible :public do |template|
        template.add :title
        template.add :content
    end
end

И чтобы вызвать его вне класса, используйте MyModeltest::ACTS_AS_API

person gaurav.singharoy    schedule 11.10.2013
comment
Привет, спасибо за ваш ответ. я полагаю, что не ясно, что происходит, моя вина. Проблема в том, что гем act_as_api не распознается в ActiveModel. это ссылка на проект, чтобы было понятнее: act_as_api - person Andrea Mucci; 11.10.2013