1

我知道 Ruby 中常见的验证方法。我当前的问题是,如果记录存在且布尔值设置为 true,我希望插入失败。表中的示例列是 => 名称、地址、Has_changed、id

现在,如果在表中将 has_changed 设置为 true,我想在表中添加新条目(在单独的调用中),该条目将具有名称、地址(新的)、has_changed(设置为 false)和 id。我不想更新现有条目,因为我想保留历史记录。

有没有办法通过使用 Ruby 来进行这样的验证?

提前致谢。

4

1 回答 1

0

我认为最好在控制器中使用“新”和“创建”操作

class RecordsController < BaseController
  def new
    @record = Record.find(params[:id])
  end

  def create
    Record.create(params[:record])
  end
end

您的表格只包含地址

在你的模型中做一个 before_create 钩子

class Record < ActiveRecord::Base

  default_value_for :has_changed, false
  before_create :check_changed

  ...

  private

  def check_changed
    changed_record = Record.where(name: name, has_changed: false).first
    if changed_record && (changed_record.address != address)
      changed_record.has_changed = true
      changed_record.save
    end
  end
end

并添加地址验证以避免重复

于 2013-09-18T12:55:23.617 回答