我有一张表格。 相同的表单用于创建和编辑......
在我的模特中
validate_uniqueness_of :empID
存在.. 在我更新的形式,我得到empID已经采取的错误.. 有什么办法可以在编辑中排除这个验证..
答案 0 :(得分:4)
您可以简单地定义您的验证只应在创建
时生效validates :empID, uniqueness: true, on: :create
答案 1 :(得分:1)
" @TheChamp的事情在我的编辑表单中我已经禁用了编辑id的选项..因为我希望id在该页面中显示为disbaled我不能删除那些具有类似条件的empID行如果params [:action] ==编辑..所以希望这是唯一的解决方案.."
如果您想要的是当表单是针对现有表单时,empID不可编辑...您确实可以检查表单是否用于编辑,并且只显示如下:
(假设moel在一个名为my_model
的变量中)
# new_record? will only be true for a model that is being created, not edited
<% if my_model.new_record? %>
<%= f.select :empID, options_go_here %>
<% else %>
# don't display the field-here, instead just display the employee-info
<%= my_model.emp.name %>
<% end %>
答案 2 :(得分:-1)
您的应用程序正在完成您指示的操作。
验证更新请求冲突的empID属性的唯一性。而不是仅仅通过验证创建操作,你应该通过以下方式思考你的逻辑:
从我的角度看,empID定义了记录与emp模型之间的关系?如果是这样,请调整验证以使其正常运行:
class Model < ActiveRecord::Base
belongs_to :emp
validates_presence_of :empID
end