Ошибка валидации Rails - PullRequest
       3

Ошибка валидации Rails

2 голосов
/ 28 июня 2010

При попытке добавить сообщение об ошибке, используя add_to_base, я получаю сообщение об ошибке неопределенного метода «ошибки».Я определяю это в моей модели.Я должен включить любой другой файл для доступа к переменной ошибки.

Файл модели - Я определяю его внутри метода

self.errors.add_to_base("Invalid Name")

Сообщение об ошибке

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

Я пытался назвать его также errors.add_to_base("Invalid Name"), но все равно получаю ту же ошибку.

Спасибо.

Ответы [ 4 ]

4 голосов
/ 28 июня 2010

вы должны вызывать его в вашем методе обратного вызова, что-то вроде следующего:

  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
1 голос
/ 28 июня 2010

Я подозреваю, что вы определили свой метод как метод класса, а не как метод экземпляра.

Методы класса выглядят так на ruby:

def self.checkFoo()
  ...
end

Методы экземпляра выглядят такthis:

def checkFoo()
  ...
end

Убедитесь, что ваш метод checkFoo является методом экземпляра, а затем используйте его следующим образом:

class MyModel < ActiveRecord::Base
  validate :foo

  private
  def checkFoo()
    self.errors.add etc..
  end
end
0 голосов
/ 28 июня 2010

Похоже, у вашего self.errors.add_to_base ("Неверное имя") нет проблем

Но ваша модель должна наследоваться от ActiveRecord :: Base

ура

Sameera

0 голосов
/ 28 июня 2010

Обычно используются проверочные обратные вызовы, ошибки модели используются как для сбоя предполагаемого сохранения базы данных, так и для настройки контекстных сообщений об ошибках для конечного пользователя. Вариант add_to_base предназначен для общих неспецифических ошибок (т. Е. Не связан с конкретным атрибутом модели).

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

Впоследствии * * +1004

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

завершится ошибкой, а массив @ my_model.errors.full_messages будет содержать

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

Однако для приведенного выше примера существует сокращение: 1010 *

class MyModel < ActiveRecord::Base
  validates_presence_of :some_attribute, :msg => "must be filled in"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...