Ruby on rails Rails验证错误

Ruby on rails Rails验证错误,ruby-on-rails,ruby,exception-handling,Ruby On Rails,Ruby,Exception Handling,在尝试使用add_to_base添加错误消息时,我收到一条未定义的方法“errors”消息。我正在我的模型中定义它。我是否应该包含任何其他文件以访问errors变量 模型文件-我在一个方法中定义它 self.errors.add_to_base("Invalid Name") 错误消息 undefined method `errors' for #<Class:0x0000010179d7a0> 的未定义方法“错误”# 我试着将其称为错误。将\u添加到\u base(“无效名称

在尝试使用add_to_base添加错误消息时,我收到一条未定义的方法“errors”消息。我正在我的模型中定义它。我是否应该包含任何其他文件以访问errors变量

模型文件-我在一个方法中定义它

self.errors.add_to_base("Invalid Name")
错误消息

undefined method `errors' for #<Class:0x0000010179d7a0>
的未定义方法“错误”#
我试着将其称为
错误。将\u添加到\u base(“无效名称”)
中,但仍然得到相同的错误


谢谢。

您应该在回调方法中调用它,如下所示

  def validate
    if !self.interests.blank? && !self.interests.match("<").nil?
        self.errors.add :base, 'Please ensure that Interest field do not contain HTML(< and >) tags'
    end
  end
def验证

如果!self.interests.blank?&&!self.interests.match(“我怀疑您将方法定义为类方法,而不是实例方法

在ruby上,类方法如下所示:

def self.checkFoo()
  ...
end
实例方法如下所示:

def checkFoo()
  ...
end
class MyModel < ActiveRecord::Base
  validate :foo

  private
  def checkFoo()
    self.errors.add etc..
  end
end
检查checkFoo方法是否为实例方法,然后按如下方式使用它:

def checkFoo()
  ...
end
class MyModel < ActiveRecord::Base
  validate :foo

  private
  def checkFoo()
    self.errors.add etc..
  end
end
classmymodel
通常用于验证回调,模型错误用于导致预期数据库保存失败和为最终用户设置上下文错误消息。add_to_base变量用于一般、非特定的错误情况(即与特定模型属性无关)

将失败,@my_model.errors.full_消息数组将包含

[ ..., "Some_attribute must be filled in", ... ]
然而,上面的例子有一个缩写,如下所示

class MyModel < ActiveRecord::Base
  validates_presence_of :some_attribute, :msg => "must be filled in"
end
classmymodel“必须填写”
结束

看起来您的“self.errors.add\u to\u base(“无效名称”)没有任何问题

但是您的模型应该继承自ActiveRecord::Base

干杯


sameera

请包含更多的模型代码。错误消息表明self指向类的实例,而不是模型类的实例。这是许多可以忽略的self(selfs?)。