Activerecord 在mysql上验证和索引的唯一性

Activerecord 在mysql上验证和索引的唯一性,activerecord,ruby-on-rails-3.2,Activerecord,Ruby On Rails 3.2,我编写了以下迁移: class AddValidationsToAnimals < ActiveRecord::Migration def change add_index :animals, [:name, :user_id], :unique => true end end 当我试图添加一个会破坏此规则的注册表时,除非在我的视图中得到一条漂亮的消息,否则我会得到一个RecordNotUnique异常 为什么??我怎样才能解决这个问题 提前谢谢 请在这里粘贴您的

我编写了以下迁移:

class AddValidationsToAnimals < ActiveRecord::Migration
  def change
    add_index :animals, [:name, :user_id], :unique => true
  end
end
当我试图添加一个会破坏此规则的注册表时,除非在我的视图中得到一条漂亮的消息,否则我会得到一个
RecordNotUnique
异常

为什么??我怎样才能解决这个问题

提前谢谢



请在这里粘贴您的方法代码。它是一个常见的
对象。是否保存?请尝试在之前调用
对象。有效?
并检查它是否返回
false

请将方法代码粘贴到此处。它是一个常见的
对象。是否保存?尝试调用
object.valid?
之前,检查它是否返回
false

我在问题中添加了save方法。添加@animal.valid之后?在保存之前,它会工作。仍然存在的问题是rails为什么不验证它?我在问题中添加了save方法。添加@animal.valid之后?在保存之前,它会工作。仍然存在的问题是为什么rails不验证它?
validates_uniqueness_of :name, :scope => :user_id
  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