我知道Ruby中常见的验证方法。 我目前的问题是,如果记录存在boolean设置为true,我希望插入失败。例 表中的列是=>姓名,地址,Has_changed,id
现在如果在表中将has_changed设置为true,我想在表中(在单独的调用中)添加新条目,该条目将具有名称,地址(新的),has_changed(设置为false)和id。我不想更新现有的条目,因为我想保留历史记录。
有没有办法通过使用Ruby进行这样的验证?
提前致谢。
答案 0 :(得分:0)
我认为最好在你的控制器中使用“新”和“创建”动作
class RecordsController < BaseController
def new
@record = Record.find(params[:id])
end
def create
Record.create(params[:record])
end
end
您的表单只包含地址
在你的模型中创建一个before_create hook
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
并添加地址验证以避免重复