Действительно ли возможно проверить уникальность атрибута дочерней модели, ограниченного по объему против полиморфных отношений?
Например, мне назвали модель field
это принадлежит fieldable
:
class Field < ActiveRecord::Base
belongs_to :fieldable, :polymorphic => :true
validates_uniqueness_of :name, :scope => :fieldable_id
end
У меня есть несколько других моделей (Страницы, Объекты), которые имеют много Полей. Таким образом, то, что я хочу, должно проверить уникальность имени поля против родительской модели, но проблема состоит в том, что иногда Страница и Объект совместно используют тот же Идентификационный номер, заставляя проверки перестать работать, когда они не были должны.
Я просто делаю эту несправедливость или являюсь там лучшим способом сделать это?
Просто расширите область действия, включив в нее тип с возможностью полей:
class Field < ActiveRecord::Base
belongs_to :fieldable, :polymorphic => :true
validates_uniqueness_of :name, :scope => [:fieldable_id, :fieldable_type]
end