Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby on Rails: Skipping 'validate_on_create' statement for seeds

I have a 'validate_on_create' statement in one of my controllers that I would like all of my seed data to skip. What are some solutions so that the create statement in my seeds file skips this validation. My current solution is commenting out the validation each time I run rake db:seed. Anything a little more clever?

like image 357
JackCA Avatar asked May 17 '10 02:05

JackCA


3 Answers

Have you considered adding an attribute in the model which is checked in the validate_on_create method?

Example:

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, ......)
like image 98
Sidane Avatar answered Oct 23 '22 21:10

Sidane


You can skip validations by calling model.save(false) on your seeds, assuming you are not loading them via fixtures.

like image 4
Chubas Avatar answered Oct 23 '22 21:10

Chubas


You can explicitly skip all validations when you save an object by calling object.save(false).

For example:

# 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)
like image 1
nfm Avatar answered Oct 23 '22 22:10

nfm