【发布时间】:2012-04-15 17:41:27
【问题描述】:
好的,我有一个名为 Tire 的模型,我无法更新某些保留名称的名称字段
class Tire < ActiveRecord::Base
RESERVED_TIRES = ['Michelin', 'Good Year', 'Firestone']
before_update :reserved_tires
def reserved_tires
if RESERVED_TIRES.include?(self.name)
self.errors.add(:base, "Cant be changed")
false
end
end
end
并且我不需要允许用户更新任何字段,因为当前名称在保留字中...这适用于除用户更新名称之外的所有字段。
例如,用户更新到“Michelinnnn”,然后它允许更新,因为 self.name 是“Michelinnnn”,而不是保存在数据库中的“Michelin”。关于如何解决这个问题的任何想法
【问题讨论】:
-
在这种情况下如何添加约束
-
您不能在回调中使用 id 读取现有数据库记录并进行比较吗?或者,更确切地说,按照 Leventix 的建议使用 name_was。
标签: ruby-on-rails ruby ruby-on-rails-3 validation