ブール値のプロパティ :is_root を持つページ モデルがあります。この値が true に設定されている場合、この値は一意である必要があるため、1 つのアイテムでこれを true に設定すると、これが true に設定されている他のアイテムは代わりに false に設定する必要があります。アクティブなアイテムを交換するだけです。
これを行うエレガントな「レール」の方法はありますか? 現時点では、私はこれを使用しています:
class Page < ActiveRecord::Base
attr_accessible :is_root
before_save :guarantee_uniqueness_of_is_root
def guarantee_uniqueness_of_is_root
if self.is_root?
Page.where(:is_root => true).each do |p|
p.update_attribute(:is_root, false) if p != self
end
end
end
end
終わり
しかし、これは私には非常に醜いようです。
ご協力いただきありがとうございます :)
アルネ