这就是我的模型的样子
User
belongs_to :computer
Computer
has_many :user
用户是在人们在网站上注册帐户但计算机是我在seeds.rb / some .rake文件中创建的预加载数据时创建的。当应用程序首次启动并且人们开始注册并与正确的computer_id相关联时,一切都很好。但是,假设我想将另一台计算机添加到列表中
Computer.destroy_all
Computer.create({:name => "Akane"})
Computer.create({:name => "Yoda"})
Computer.create({:name => "Mojito"}) #newly added
第二次运行rakefile会搞乱关联,因为User表中的computer_id引用了Computer表中的旧id。由于我已经运行了上面的脚本,因此计算机表中的id不断增加,而不考虑用户对它的关联。现在,所有用户都没有对其计算机的引用,并且所有计算机现在都有新的ID。
问题:我是否有更好的方法来预加载数据而不会搞砸我的关联?我希望能够添加新的计算机而不必破坏用户的表。销毁计算机表对我来说很好,并重新重建它,但现有用户必须保持完整的旧协会。
答案 0 :(得分:0)
您是否考虑过只是减少计算机表的迁移?
假设您的迁移名为db / migrate / 1_create_computers.rb
$ rake db:migrate:down version=1
从种子中删除destroy方法。 你总是保留用户表...你必须有一个列computer_id
当然,协会也是
ComputerClass < ActiveRecord::Base
has_many :users #(don't forget the 's')
end