如何使用较少的SQL查询生成样本记录?

时间:2013-10-12 19:44:42

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

在我的Rails应用程序的User控制器中,我有一个用示例people填充用户数据库的操作:

def generate_samples
  10.times do
    p = current_user.people.create!(:first_name   => Faker::Name.first_name,
                                    :last_name    => Faker::Name.last_name,
                                    :email        => Faker::Internet.email)
    p.sample = true
    p.save
  end
  flash[:success] = "Samples generated."
  redirect_to people_path
end

困扰我的是,它需要Rails 83 SQL查询来生成这10个人。

有没有办法方便我的代码,也许只用一个查询创建X用户?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Ya,您可以将其包装在活动记录事务中,以在单个事务中执行所有创建。有点像:

begin
  ActiveRecord::Base.transaction do
    10.times do
      p = current_user.people.create!(:first_name   => Faker::Name.first_name,
                                :last_name    => Faker::Name.last_name,
                                :email        => Faker::Internet.email)
      p.sample = true
      p.save
    end
  end
  rescue => e
    // throw your error and rollback
  end