ruby on rails has_one ассоциация с уникальным - PullRequest
8 голосов
/ 07 июня 2011

Эй, у меня есть модель, которая has_one :bar. И бар belongs_to :foo. Мне было интересно, есть ли способ увеличить has_one так, чтобы никакие два бара не могли принадлежать одному и тому же foo. Я посмотрел документацию для has_one, и кажется, что нет параметра: uniq, который мне разрешено указывать. Так что мне нужно создать собственную проверку для достижения этой цели? Или есть более простой способ?

Спасибо.

Ответы [ 3 ]

15 голосов
/ 07 июня 2011

Вам не нужна пользовательская проверка, просто установите уникальность bar для любого заданного foo

class Bar < ActiveRecord::Base
  belongs_to :foo
  validates_uniqueness_of :foo_id
end
1 голос
/ 12 июня 2018

добавить индекс uniq к foo_id в столбцах таблицы, чтобы вы не могли создать 2 бара с одинаковым значением foo_id, поэтому только один столбец может принадлежать foo

0 голосов
/ 07 июня 2011

Я думаю, вам следует написать свою собственную проверку, потому что две разные записи Foo не имеют представления о записи, связанной с другими (Bar)

...