为了在我的app的不同部分访问相同的数组,我将数组存储在相应的Model中,使用class方法检索数组。
在下面的代码中,代码用于视图(生成选择下拉列表)和相同模型(以验证传递的值)。
class Request < ActiveRecord::Base
validates :code, presence: true, inclusion: { in: self.codes }
def self.codes
return ["OBJ", "SER", "REC"]
end
end
但是使用它会产生以下错误:
undefined method `codes' for #<Class:0x000001074ddc50>
即使删除包含中的self.
,也无法解决问题(未定义的局部变量)。
你有什么想法吗?
答案 0 :(得分:1)
您的codes
方法在您的验证中使用后声明 - 当执行验证行时,方法尚未定义,因此错误。
如果您在codes
方法之后放置验证,它应该有效。
答案 1 :(得分:1)
您可以将其定义为模型顶部的常量
class Request < ActiveRecord::Base
CODES = ["OBJ", "SER", "REC"]
你可以像这样的请求:: CODES
访问它验证将如下所示
validates :code, presence: true, inclusion: { in: CODES }