结果不会是一样的...
第一个:
class Customer
belongs_to :user
end
class User
has_many :customers
end
将在客户中设置user_id而在用户中不设置任何内容。这意味着一个客户只能与一个用户相关联。在反射方面,你可以做这样的事情:
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 关联还建立了与另一个模型的一对一连接,但语义(和结果)有所不同。这种关联表明模型的每个实例都包含或拥有另一个模型的一个实例。