Ruby on rails RubyonRails:跳过&x27;在创建时验证';种子声明

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_

我的一个控制器中有一个“validate_on_create”语句,我希望跳过所有种子数据。有哪些解决方案可以使种子文件中的create语句跳过此验证。我当前的解决方案是在每次运行rake db:seed时对验证进行注释。还有更聪明的吗?

您可以通过调用种子上的
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
是不推荐的,对吧?刚刚在另一个问题上找到了这个答案。有了一些正则表达式,就可以定制种子文件来实现这一点。