在Rails中验证唯一性和编辑表单

时间:2014-07-15 10:57:36

标签: ruby-on-rails ruby

我有一张表格。 相同的表单用于创建和编辑......

在我的模特中

validate_uniqueness_of :empID

存在.. 在我更新的形式,我得到empID已经采取的错误.. 有什么办法可以在编辑中排除这个验证..

3 个答案:

答案 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的情况?
  • 为什么empID应该是唯一的?它是主键吗?

从我的角度看,empID定义了记录与emp模型之间的关系?如果是这样,请调整验证以使其正常运行:

class Model < ActiveRecord::Base
  belongs_to :emp
  validates_presence_of :empID
end