我在我的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”
答案 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