Было ли удалено определение def в Rails 3.1? - PullRequest
4 голосов
/ 08 августа 2011

Был ли удален "def validate" в Rails 3.1?Я на Rails 3.1 pre и, похоже, не работает

class Category < ActiveRecord::Base
  validates_presence_of :title

  private 

  def validate
    errors.add(:description, "is too short") if (description.size < 200)
  end 
end

Проверка "title" работает, а проверка "description" - нет.

Ответы [ 3 ]

11 голосов
/ 08 августа 2011

Работает ли что-то подобное для вас?

class Category < ActiveRecord::Base
  validates_presence_of :title
  validate :description_length

  def description_length
    errors.add(:description, "is too short") if (description.size < 200)
  end 
end
2 голосов
/ 09 мая 2012
class Category < ActiveRecord::Base
  validates_presence_of :title

  private 

  validate do
    errors.add(:description, "is too short") if (description.size < 200)
  end 
end
0 голосов
/ 10 августа 2011

Для других типов проверок вы также можете добавить «валидаторы», подобные перечисленным здесь:

http://edgeguides.rubyonrails.org/3_0_release_notes.html#validations

class TitleValidator < ActiveModel::EachValidator
  Titles = ['Mr.', 'Mrs.', 'Dr.']
  def validate_each(record, attribute, value)
    unless Titles.include?(value)
      record.errors[attribute] << 'must be a valid title'
    end
  end
end

class Person
  include ActiveModel::Validations
  attr_accessor :title
  validates :title, :presence => true, :title => true
end

# Or for Active Record

class Person < ActiveRecord::Base
  validates :title, :presence => true, :title => true
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...