Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 通过关联为具有多个的对象进行批量插入_Ruby On Rails_Ruby On Rails 4_Activerecord - Fatal编程技术网

Ruby on rails 通过关联为具有多个的对象进行批量插入

Ruby on rails 通过关联为具有多个的对象进行批量插入,ruby-on-rails,ruby-on-rails-4,activerecord,Ruby On Rails,Ruby On Rails 4,Activerecord,使用者 友谊 追随者 user has_many :followers, through: :friendships follower has_many :users, through: :friendships 我需要插入多达50万“追随者”,我们有很多用户。总的来说,将有数百万追随者,约500名用户 我已经把所有的东西都放到了一个事务中,这节省了一点时间,但这还不够 ActiveRecord::Base.transaction do new_usernames.each do |nam

使用者 友谊 追随者

user has_many :followers, through: :friendships
follower has_many :users, through: :friendships
我需要插入多达50万“追随者”,我们有很多用户。总的来说,将有数百万追随者,约500名用户

我已经把所有的东西都放到了一个事务中,这节省了一点时间,但这还不够

ActiveRecord::Base.transaction do
  new_usernames.each do |name|
    follower = followers.find_or_create_by! username: name
    # TODO
    # do someting with follower
  end
end
我的想法是让它成为一条原始的sql语句,类似于:

插入followers(用户名)值(#{account.后接.join(“,”)

(用户名是唯一的,因此mysql将防止双重帐户)

很明显,我错过了所有的联想。然后我想我可以做一些类似的事情

从用户id=1337的友谊中删除
然后再次大规模插入所有友谊

插入友谊值(account.u后跟.map{{x}“(1337,{x})”)

很明显,我无法在友谊赛中追踪任何其他信息


还有其他可能性吗?

追随者和用户是不同的模型吗?什么是
账户
在这个例子中,它是一个用户,对吗?是的,不同的模型。账户实际上只是一个代表instagram用户的对象。然后是一个用户名数组。我稍微修改了代码,使它更简单