添加" uniq"检查现有的HABTM协会

时间:2016-06-22 00:09:10

标签: ruby-on-rails ruby-on-rails-4

我在学生和课堂之间有一个HABTM协会:

has_and_belongs_to_many :students, join_table: :classrooms_students

我为连接表创建了一个索引:

add_index "classrooms_students", ["classroom_id", "student_id"], unique: true

现在我要添加" uniq"检查这一点,以便在连接表中没有重复的记录,我可以在rails中捕获它。我可以直接将此检查添加到模型文件中,还是需要迁移才能执行此操作?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您应该优先将其添加到迁移中,然后您也可以进行模型级别检查(如下所述)。

在你的情况下,你有类似的东西:

class ClassroomsStudent
  validates :student_id, uniqueness: { scope: :classroom_id }
end

在迁移中,您可以拥有:

class AddUniqueIndexClassroomsStudent
  def change
    add_index :classrooms_students, [:classroom_id, :student_id], unique: true
  end
end

Add Index on ApiDoc

Unique Index on Rails Guide