我应该使用rake任务或迁移将数据从列迁移到它自己的表吗?

时间:2017-11-22 03:40:07

标签: ruby-on-rails ruby-on-rails-4 migration rake

我有一个Books表,其中author_name列是一个字符串 我有一个Author表,我希望根据author_name填充。

关系是作者有很多书,书属于作者。 Books表对于一对多关系有一个author_id

除了rake任务可以多次运行之外,将其写成以下内容有什么好处:

  • 迁移
  • rake task
  • rails console

迁移:

class MoveAuthorDataToAuthors < ActiveRecord::Migration

  def up
    Book.all.each do |book|
      first_name, last_name = book.author_name.split(' ')
      Author.find_or_create_by(first_name: first_name, last_name: last_name).books << book
    end
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end

end

作为rake任务,它可能看起来像

namespace :update_author_tabledb do
  desc "Move Author Data To Authors"
    Book.all.each do |book|
      first_name, last_name = book.author_name.split(' ')
      Author.find_or_create_by(first_name: first_name, last_name: last_name).books << book
    end
  end
end

控制台

在我的rails控制台中,我可以这样做:

 Book.all.each do |book|
     first_name, last_name = book.author_name.split(' ')
     Author.find_or_create_by(first_name: first_name, last_name: last_name).books << book
 end

0 个答案:

没有答案