开发者

Rails Validation Error

While trying to add an error message using add_to_base, I am getting an undefined method 'errors' message. I am defining it in my model. Am I supposed to include any other file in order to access the errors variable.

Model File - I am defining it inside a method

self.errors.add_to_base("Invalid Name")

Error Message

undefined method `errors' for #<Class:0x0000010179d7a0>

I tried by calling it as errors.ad开发者_运维百科d_to_base("Invalid Name") also but still getting the same error.

Thanks.


you should call it in your callback method, something like following

  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


I suspect that you have defined your method as a class method, instead of as an instance method.

Class methods look like this on ruby:

def self.checkFoo()
  ...
end

Instance methods looks like this:

def checkFoo()
  ...
end

Check that your checkFoo method is an instance method, and then use it like this:

class MyModel < ActiveRecord::Base
  validate :foo

  private
  def checkFoo()
    self.errors.add etc..
  end
end


Typically used the validation callbacks, model errors are used both to cause the prospective database save to fail and to set up a contextual error messages for the end-user. The add_to_base variant is intended for general, non-specific error conditions (i.e. not associated with a particular model attribute).

class MyModel < ActiveRecord::Base
  validate do |my_model|
    if my_model.some_attribute.blank? # For example
      my_model.errors.add :my_model, "must be filled in"
    end
  end
end

Subsequently

@my_model = MyModel.create(:some_attribute => "")

would fail and the @my_model.errors.full_messages array would contain

[ ..., "Some_attribute must be filled in", ... ]

There is however a shorthand for the above example as follows

class MyModel < ActiveRecord::Base
  validates_presence_of :some_attribute, :msg => "must be filled in"
end


Looks like your 'self.errors.add_to_base("Invalid Name")' doesn't have any problem

But your model should inherit from ActiveRecord::Base

cheers

sameera

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜