在Rails中播种外键?

时间:2013-01-22 19:15:37

标签: ruby-on-rails

我在Rails

中创建用户及其配置文件之间的关系
User has_one :profile
Profile belongs_to :user

据我所知,在正常情况下,Rails会自动在这两个模型之间创建外键关系。但是,当我使用以下方式为数据库播种时,创建了许多用户并创建了许多配置文件,那么我如何确保Joe的配置文件与Joe的用户帐户相关联。

User.create!(email: "j@gmail.com", password: "blahblah", encryptedpass: "3838")
Profile.create!(first_name: "Joe", last_name: "Frank", address: "43 Flint Road", phone: "604 345 678", )

 User.create!(email: "anne@gmail.com", password: "blahblahblah", encryptedpass: "4567")
Profile.create!(first_name: "Anna", last_name: "Jones", address: "43 Boogy Road", phone: "604 345 678", )

...想象成千上万的用户和个人资料以这种方式播种......

我是否必须在配置文件中设置user_id外键,为了播种它,我是否只需要组成一个外键ID?我可以用轨道生成它吗?例如,我在Joe的配置文件上创建了一个外键user_id: 1我如何确定他的用户模型实例将为“1”换句话说,如果我手动设置他的user_id外键,怎么能我确保它会匹配用户模型的ID?

1 个答案:

答案 0 :(得分:3)

您可以使用create_profile! method(当您声明has_one :profile时由Rails创建

u = User.create!(email: "j@gmail.com", password: "blahblah", encryptedpass: "3838")
u.create_profile!(first_name: "Joe", last_name: "Frank", address: "43 Flint Road")