假设在Ruby中进行以下数据库迁移:
create_table:question_votes do | t |
t.integer:user_id
t.integer:question_id
t.integer:投票
t.timestamps
结束
进一步假设我希望DB中的行包含唯一的(user_id,question_id)对。
validates_uniqueness_of:user_id,:question_id
似乎只是简单地将行设为用户标识唯一,并且通过问题标识唯一,而不是唯一的一对。
发布于 2018-03-28 17:16:23
validates_uniqueness_of :user_id, :scope => [:question_id]
如果需要包含另一列(或更多),则可以将其添加到范围。例:
validates_uniqueness_of :user_id, :scope => [:question_id, :some_third_column]
发布于 2018-03-28 17:28:07
如果使用mysql,则可以使用唯一索引在数据库中执行此操作。是这样的:
add_index :question_votes, [:question_id, :user_id], :unique => true
当尝试保存question_id / user_id的doubled-up组合时,这会引发异常,因此必须尝试并找出要捕获和处理的异常。
https://stackoverflow.com/questions/-100007843
复制相似问题