validate_uniqueness_of和mysql上的索引

时间:2012-09-13 03:46:45

标签: activerecord ruby-on-rails-3.2

我写了以下迁移:

class AddValidationsToAnimals < ActiveRecord::Migration
  def change
    add_index :animals, [:name, :user_id], :unique => true
  end
end

确定。然后,在我的模型中,我添加以下验证:

validates_uniqueness_of :name, :scope => :user_id

当我尝试添加一个会损害此规则的注册表时,除非在我的视图中收到一条漂亮的消息,否则我会收到RecordNotUnique异常。

为什么呢?我该如何解决这个问题?

提前致谢。


  def create
    @animal = current_user.animals.new(params[:animal])
    @animal.valid?
    respond_to do |format|
      if @animal.save
        format.html { redirect_to @animal, notice: 'Animal registrado com sucesso.' }
        format.json { render json: @animal, status: :created, location: @animal }
      else
        format.html { render action: "new" }
        format.json { render json: @animal.errors, status: :unprocessable_entity }
      end
    end
  end

1 个答案:

答案 0 :(得分:1)

请在此处粘贴您的方法代码。这是常见的object.save吗?尝试之前致电object.valid?并检查它是否正在返回false