我想检查复选框是否被选中,如果是,然后更新所有记录的特定列(update_checkbox
- 我的表中的布尔值)为真的所有记录。更新记录,如果复选框被选中
其主要目的是在列中只有一个记录可以是'真',并且当创建/编辑新记录并且选中该复选框时,该记录将为真,并将另一个记录变为假。
在型号/ article.rb:
class Article < ActiveRecord::Base
if :update_checkbox == '1'
#find records where update_checkbox is true & update to false
Article.where(:update_checkbox => true).update_all(:update_checkbox => false)
end
end
我可以更新我的记录不错,但它是我在遇到问题的“如果复选框被选中”的一部分 - 目前,当我创建update_checkbox
新纪录检查此标志设置为true的行未被设置为false。任何帮助表示赞赏!
感谢您的帮助!这工作......主要是:)但我想保持当前记录为真,而将所有其他人设置为假。此外,这并不检查复选框是否为真/选中,因此所有记录都将更新为false(不是我要找的)。 – LKB
我已将'after_save'更改为'before_save',解决了第一个问题。仍在寻找一种方法来检查复选框是否被选中。 – LKB
@LKB不知道你需要用'true'保留现有记录。在这种情况下,请看@索引的答案。它将通过'update_checkbox = true'保留现有记录。 – retgoat