Ruby on Rails: пропущен оператор 'validate_on_create' для семян - PullRequest
6 голосов
/ 17 мая 2010

У меня есть оператор 'validate_on_create' в одном из моих контроллеров, который я бы хотел, чтобы все мои начальные данные были пропущены. Какие есть решения, так что оператор create в моем файле seed пропускает эту проверку. Мое текущее решение - комментировать валидацию каждый раз, когда я запускаю rake db: seed. Что-нибудь более умное?

Ответы [ 3 ]

5 голосов
/ 02 сентября 2010

Рассматривали ли вы добавление в модель атрибута, который проверяется в методе validate_on_create?

Пример:

class MyModel < ActiveRecord::Base

  attr_accessor :skip_on_create_validation

  def validate_on_create
    unless skip_on_create_validation
      # do validation
    end
  end

end

# In db/seeds.rb
MyModel.create(:skip_on_create_validation => true, ......)
4 голосов
/ 17 мая 2010

Вы можете пропустить проверки, вызвав model.save(false) на ваших семенах, при условии, что вы не загружаете их через приборы.

1 голос
/ 01 сентября 2010

Вы можете явно пропустить все проверки при сохранении объекта, вызвав object.save(false).

Например:

# In your model
def validate_on_create
  # An example validation - replace with whatever you like
  return true unless name.blank?
end

# In db/seeds.rb
# Create a new person
p = Person.new(:name => 'Bob')
# Save the record to the database, and *skip validation*
p.save(false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...