这实际上不会是相同的结果......
第一个:
class Customer
belongs_to :user
end
class User
has_many :customers
end
将在 Customer 中设置 user_id,而在 User 中不设置任何内容。这意味着一个客户只能与一个用户相关联。在反射方面,您可以执行以下操作:
user = User.create(name: 'John Snow')
customer = user.customers.build(name: 'Tywin Lannister')
customer.save
user.inspect
=> #<User id: 8, name: "John Snow">
customer.inspect
=> #<Customer id: 12, user_id: 8, name: "Tywin Lannister">
user.customers.inspect
=> [#<Customer id: 12, user_id: 8, name: "Tywin Lannister">]
customer.user
=> #<User id: 8, name: "John Snow">
第二个:
class Customer
has_one :user
end
class User
belongs_to :customer
end
将在用户中设置一个 customer_id。你可以这样做:
customer = Customer.create(name: 'Tywin Lannister')
user = customer.build_user(name: 'John Snow')
user.inspect
=> #<User id: 8, customer_id: 12, name: "John Snow">
customer.inspect
=> #<Customer id: 12, name: "Tywin Lannister">
user.customer
=> #<Customer id: 12, name: "Tywin Lannister">
customer.user
=> #<User id: 8, customer_id: 12, name: "John Snow">
所以在你的情况下
你需要第一个。
来自文档:
belongs_to 关联建立与另一个模型的一对一连接,这样声明模型的每个实例“属于”另一个模型的一个实例。
has_one 关联还建立了与另一个模型的一对一连接,但语义(和结果)有所不同。这种关联表明模型的每个实例都包含或拥有另一个模型的一个实例。