Rails:在同一模型中访问模型的类方法

时间:2014-04-20 14:14:08

标签: ruby-on-rails model

为了在我的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.,也无法解决问题(未定义的局部变量)。

你有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您的codes方法在您的验证中使用后声明 - 当执行验证行时,方法尚未定义,因此错误。

如果您在codes方法之后放置验证,它应该有效。

答案 1 :(得分:1)

您可以将其定义为模型顶部的常量

class Request < ActiveRecord::Base
  CODES = ["OBJ", "SER", "REC"]

你可以像这样的请求:: CODES

访问它

验证将如下所示

 validates :code, presence: true, inclusion: { in: CODES }