使用ActiveModel :: Model的acts_as_api未定义的局部变量

时间:2013-10-11 09:54:50

标签: ruby-on-rails-4 activemodel

我在我的rails 4 app中有这个ActiveModel。

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'for ...

那么,是否可以在ActiveModel下调用acts_as_api? 如果有,你能告诉我这是怎么做到的吗?

提前致谢

更清楚一点,我的问题不在于静态变量acts_as_api,而是使用了ActiveModel无法识别的gem“acts_as_api”

2 个答案:

答案 0 :(得分:3)

我是acts_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

您可以在wiki中找到一个示例:

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

如果您需要进一步的帮助,请告诉我。 :)

答案 1 :(得分:1)

如果要在模型中使用常量,则必须以大写形式使用常量并初始化它。将其定义为

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