我有一个具有布尔属性的页面模型:is_root。如果此值设置为 true,则该值应该是唯一的,因此通过在一个项目上将此设置为 true,其他将此设置为 true 的项目应设置为 false。它只是交换活动项目。
有没有优雅的“rails”方式来做到这一点?目前我正在使用这个:
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
结尾
但这对我来说似乎很丑陋。
谢谢你的帮助 :)
阿恩