Статья будет дополняться, по мере разбора новых связей. 

и прям очередной мой стыд, чем отличается has_one от belongs_to а тем что в первом случае id со связью не в нашей таблице, а во второй id со связью в нашей.

милочка а вы знали что яйца чернеют от серебра?

век живи, век учись сказал поручик ржевский и предложил серебренный портсигар из кармана штанов в мундир.

создадим все по юзеру, у него будет связь один ко многим с заказами и один к одному с адресами.

!!! основное что нужно запомнить в таблицах с которыми мы создаем связь поле для связи через id должно называться имени таблицы с которой связываем подчеркивание id

bin/rails generate scaffold user login:string pass:string email:string balans:integer
bin/rails generate scaffold adr adres:string user_id:integer
bin/rails generate scaffold zakaz user_id:integer tovar:string
class User < ApplicationRecord
  has_many :zakaz
  has_one :adr       
  # has_many :adr   # второй вариант смотри ниже
end

class Zakaz < ApplicationRecord
  belongs_to :user
end

class Adr < ApplicationRecord
  belongs_to :user
end

связь один ко многим юзера с товаром

u=User.create(login:"test1", pass: "1234", email:"testmail.ru", balans:101) 
Zakaz.create(user_id: 1, tovar: "milk")
Zakaz.create(user_id: 1, tovar: "car")
Zakaz.create(user_id: 1, tovar: "beer")
User.find_by_id(1).zakaz.map{|x| p x.tovar }

связь один ко ко дному юзера с адресом, однонаправленная

Адрес знает о одном своем юзере, но абратное не верно, если уже совсем просто в модели юзера нет никаих упоминаней об адресе, вот и ничего и не знаем(ниже мы все закаментили)

class User < ApplicationRecord
  has_many :zakaz
  #has_one :adr
  #has_many :adr
end

Adr.find_by_id(2).user.login

User.find_by_id(2).adr.adres  #undefined method `adr' for #

связь один ко ко дному юзера с адресом, в обе стороны

class User < ApplicationRecord
  has_many :zakaz
  has_one :adr
  #has_many :adr
end

User.find_by_id(2).adr.adres  # уже работает, но если адресов у юзера несколько будет выбран первый

связь один ко ко дному юзера с адресом, один ко многим

class User < ApplicationRecord
  has_many :zakaz
  #has_one :adr
  has_many :adr
end

User.find_by_id(1).adr.map{|x| p x.adres }

# и тоже самое двумя способами, надо подробнее разобрать на досуге

User.find_by_id(1).adr.collect(&:adres)
User.find_by_id(1).adr.map(&:adres)