【发布时间】:2009-11-11 04:49:05
【问题描述】:
这是一个非常愚蠢的问题,但我有一个截止日期,我很紧张,我已经尝试了所有方法。事实上,它甚至可以工作一秒钟,但我一定是弄坏了一些东西。
我有一个默认的特色项目,我想在任何时候尝试以另一个项目为特色时覆盖它。我之前让它出错,但我不希望它出错,我只是希望它将所有内容设置为 false 并将此应用程序设置为 true。
我已经尝试了一切,在保存之前,在保存/更新命名范围之后,将每个映射到 false,然后保存,检查功能是否已更改...我认为我拥有所有正确的部分,但我可以'不要把它们放在一起。请帮忙:(
也许对此有一个快速验证,我不确定
我无法用代码详细说明,因为我已经尝试了上百万种不同的东西。
有一个名为 is_featured 的项目的布尔设置。
创建项目时,您可以将其设置为特色或不特色。
在数据库中,如果其他项目有特色,这些项目应该归零,并且刚刚更新或创建的项目应该是真实的。
我已经在模型中使用之前/之后/保存/更新以及创建和更新控制器进行了尝试
好的,我将添加一些我不知道为什么不起作用的愚蠢代码
在控制器中:
if params[:app][:is_on_front_page] == true
App.all.map{|m|( m != @app ) ? m.is_on_front_page = true : m.is_on_front_page = false}
结束
或
named_scope :is_on_front_page, :conditions => { :is_on_front_page => true }
after_update do
if self.is_on_front_page.changed? and App.is_on_front_page.count >= 1
App.all.map{|m| m.is_on_front_page = false;m.save}
end
is_on_front_page = true
save!
end
但它不会让我保存或进入无限循环或因为命名范围而对我大喊大叫
【问题讨论】:
-
您需要提供一些详细信息。例如,商品的特色如何?
-
您能详细说明一下代码吗?
标签: ruby-on-rails ruby validation