2

我正在 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?rails 可以为我生成它吗?例如,如果我在 Joe 的个人资料上创建了一个外键,user_id: 1那么我如何确定他的用户模型实例将为“1” 换句话说,如果我手动设置他的 user_id 外键,我该如何确保它?会匹配 User 模型的 id 吗?

4

1 回答 1

3

您可以使用create_profile! 方法(在您声明时由 Rails 创建has_one :profile

u = User.create!(email: "j@gmail.com", password: "blahblah", encryptedpass: "3838")
u.create_profile!(first_name: "Joe", last_name: "Frank", address: "43 Flint Road")
于 2013-01-22T19:27:49.303 回答