У меня есть объект с отношения has_one. В частности, вот эта взаимосвязь:Как защитить ассоциации Rails (предотвратить переопределение)
class Product < ActiveRecord::Base
has_one :domain
end
class Domain < ActiveRecord::Base
belongs_to :product
end
Это довольно простая ассоциация. Однако то, что я пытаюсь выяснить, является некоторым способом предотвращения переопределения ассоциации.
Предположим, у меня есть продукт с доменом «google.com», за которым следует новый продукт, который пытается сохранить как «google.com». Я хочу, чтобы второй провалился.
Любые идеи о том, как обеспечить эту проверку ассоциации?
Это говорит о том, что, возможно, ваша ассоциация has_one и belongs_to обратная. Ниже приведено более подробное объяснение. Когда вы ответили на предложение ниже (об использовании валидации), вы сказали, что «связанное поле (домен) по-прежнему уникально ...» Но сторона has_one ассоциации не должна иметь поле домена. Вместо этого сторона домена будет иметь product_id (как указано в вашем коде выше). Если вы вместо этого изменили направление ассоциации has_one/belongs_to, вы можете использовать обычные методы проверки. – don
@don благодарит за ответ. Одно замечание, если вы думаете об этом: домен принадлежит продукту. Должен ли я настраивать ассоциации только потому, что он дает мне определенные подтверждения? –