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?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
由
翻译强力驱动
问题:
回答1:
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, ......)
回答2:
You can skip validations by calling model.save(false)
on your seeds, assuming you are not loading them via fixtures.
回答3:
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)