【发布时间】:2018-08-03 16:50:40
【问题描述】:
您将如何编写一个验证来检查一定数量的记录是否已经具有true 的属性?
class BlogPost
scope :onStartpage, -> { where(onStartpage: true) }
validate :number_on_startpage
def number_on_startpage
return unless onStartpage?
errors.add(:foobar, 'foo') if Blog::Post.where(onStartpage: true).count > 3
end
end
与上面的示例一样 - 我想确保不超过三个 BlogPosts 并将属性 onStartpage 设置为 true。
但它不起作用,因为当我想保存记录时,计数仍然是 2。并且所有以后的更新都会因为计数太高而被拒绝。
【问题讨论】:
-
@FabrizioBertoglio - 感谢您的回答!这不起作用,因为后来的更新会因为计数太高而失败。
标签: ruby-on-rails ruby-on-rails-4 activerecord