Rails v3.0.9 と Mysql データベースを使用しています。
既存のデータを使用してテーブルを移行しています。
ユーザー テーブルがあり、他のすべてのテーブルには user_id 列が含まれているため、ユーザーを 2 つの (ユーザーと顧客) テーブルに分ける必要があります。
したがって、ユーザータイプが顧客である既存のユーザーレコードを使用して、新しい顧客テーブルを移行する必要があります
顧客テーブルを作成し、ユーザー タイプを顧客としてユーザー レコードの ID を設定する必要があります。これは、他の多くのテーブル (顧客のみが使用する) を移行する代わりに、ユーザーのユーザー タイプを持つすべてのレコードをチェックして割り当てることで簡単になります。顧客テーブルの新しい ID。
テーブルは次のようになります
ユーザー テーブル:
id | name | ...
------------------------------
1 | aaa | ...
2 | bbb | ...
4 | ddd | ...
6 | fff | ...
顧客テーブル
id | name | ...
-------------------------------
3 | ccc | ...
5 | eee | ...
7 | ggg | ...
ユーザーの既存のデータを移行するとき
私の移行ファイルで
def up
create_table(:customers) do |t|
t.string :name
end
User.joins(:user_type).where(:user_type => {:type_name => 'customer'}).find_in_batches(:batch_size => 100){ |users|
users.each {|user|
customer = Customer.new
customer.id = user.id
customer.name = user.name
customer.save(:validate => false)
}
}
end
また試した
Customer.create!(:id => user.id) instead of save method
これは正しいです?
プライマリ ID を割り当てる方法はありますか?
私が間違っている場合は、正しい方法で行うための提案をしてください...