Как сделать связь между таблицами one-to-one в Rails

Как сделать миграцию и модели, где связь один к одному. Например, две модели: user и address.

Связь должна быть от пользователя к адресу, чтоб можно было сделать так: user.create_address(*)

И так: user.address.city.

Я не знаю в чем разница has_one и belongs_to.


Ответы (1 шт):

Автор решения: Василиса

Разница в том, что это две стороны одной связи. Кто кому принадлежит - определяете согласно логике и здравому смыслу. "Адрес принадлежит пользователю" звучит нормально, "пользователь принадлежит адресу" - так себе.

class Address < ApplicationRecord
  belongs_to :user
end

class User < ApplicationRecord
  has_one :address
end

В таблице addresses должно быть поле user_id соответственно

→ Ссылка