Можно ли использовать ассоциацию has_one, когда модель имеет один или ноль экземпляров другой модели?

RailsGuides говорит:

http://guides.rubyonrails.org/association_basics.html Ассоциация has_many указывает, что каждый экземпляр модели имеет ноль или более экземпляров другой модели».

«Ассоциация has_one также устанавливает связь один к одному с другой моделью, но с несколько иной семантикой (и последствиями). Эта ассоциация указывает, что каждый экземпляр модели содержит или обладает одним экземпляром другой модели».

Означает ли это, что если я хочу установить ассоциацию, что каждый экземпляр модели имеет ноль или один экземпляр другой модели, лучший способ — использовать has_many, а не has_one? С какими проблемами я столкнусь, если буду использовать has_one?

Спасибо.


person user2725109    schedule 25.09.2013    source источник


Ответы (2)


has_one верен — настроенная связь не является обязательной, если вы не добавите к ней собственные проверки.

Чтобы было немного понятнее -

class Post < ActiveRecord::Base
  has_one :author

end

class Author < ActiveRecord::Base
  belongs_to :post 

end

Без проверок у данного post может быть автор (но не более одного), однако автор не обязателен.

person dax    schedule 25.09.2013

Если вы не определите конкретные проверки, has_one просто не позволит вам иметь более одного объекта, связанного с вашей моделью. Ноль в порядке.

person Miotsu    schedule 25.09.2013