Ruby on rails RubyonRails:跳过&x27;在创建时验证';种子声明
我的一个控制器中有一个“validate_on_create”语句,我希望跳过所有种子数据。有哪些解决方案可以使种子文件中的create语句跳过此验证。我当前的解决方案是在每次运行rake db:seed时对验证进行注释。还有更聪明的吗?您可以通过调用种子上的Ruby on rails RubyonRails:跳过&x27;在创建时验证';种子声明,ruby-on-rails,Ruby On Rails,我的一个控制器中有一个“validate_on_create”语句,我希望跳过所有种子数据。有哪些解决方案可以使种子文件中的create语句跳过此验证。我当前的解决方案是在每次运行rake db:seed时对验证进行注释。还有更聪明的吗?您可以通过调用种子上的model.save(false)跳过验证,前提是您没有通过fixture加载种子。当您通过调用object.save(false)保存对象时,您可以显式跳过所有验证 例如: # In your model def validate_on_
model.save(false)
跳过验证,前提是您没有通过fixture加载种子。当您通过调用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)
您是否考虑过在模型中添加一个属性,该属性在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, ......)
classmymodeltrue,…)
但我正在种子文件中使用create函数。你是不是建议我不使用?因此,与其使用“创建”功能,不如使用“构建”功能Rails 3,它是用于一个对象创建的,我不知道这一点,但我想将其用于:Model.create
而不是Model.save(false)
调用对象.create
时,没有跳过验证的选项。为什么不直接调用object.save(false)
?因为我正在创建很多类似这样的对象:models=Model.create([{:name=>“First name”},{:name=>“Second name”}])
有类似的Rails 4吗?我认为validate\u on\u create
是不推荐的,对吧?刚刚在另一个问题上找到了这个答案。有了一些正则表达式,就可以定制种子文件来实现这一点。