Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails活动记录效率:模型。在块内创建vs模型。创建(数组)_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails Rails活动记录效率:模型。在块内创建vs模型。创建(数组)

Ruby on rails Rails活动记录效率:模型。在块内创建vs模型。创建(数组),ruby-on-rails,activerecord,Ruby On Rails,Activerecord,以下哪一项效率更高 #Array is an array of hashes Array.each do |a| #some logic to clean up the record for creation Model.create!(a) end vs 通过检查,将对集合执行collect,然后递归调用create。在这种情况下,使用第一种方法会更有效,因为它使用更少的操作,并且只执行一次is\u a?(数组)检查 源代码: # File activerecord/lib/ac

以下哪一项效率更高

#Array is an array of hashes


Array.each do |a|
  #some logic to clean up the record for creation
  Model.create!(a)
end
vs

通过检查,将对集合执行collect,然后递归调用create。在这种情况下,使用第一种方法会更有效,因为它使用更少的操作,并且只执行一次
is\u a?(数组)
检查

源代码:

# File activerecord/lib/active_record/base.rb, line 504
def create(attributes = nil, options = {}, &block)
  if attributes.is_a?(Array)
    attributes.collect { |attr| create(attr, options, &block) }
  else
    object = new(attributes, options)
    yield(object) if block_given?
    object.save
    object
  end
end
# File activerecord/lib/active_record/base.rb, line 504
def create(attributes = nil, options = {}, &block)
  if attributes.is_a?(Array)
    attributes.collect { |attr| create(attr, options, &block) }
  else
    object = new(attributes, options)
    yield(object) if block_given?
    object.save
    object
  end
end