0

User我的 Rails 应用程序的控制器中,我有这个用示例填充用户数据库的操作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 用户?

谢谢你的帮助。

4

1 回答 1

0

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

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
于 2013-10-12T19:52:27.527 回答