0
目前,我有我的羣組的has_many以下遷移:通過關聯:Rails的唯一約束模型+數據庫級和競爭條件
class CreateUserGroups < ActiveRecord::Migration
def change
create_table :user_groups do |t|
t.integer :user_id, :null => false
t.integer :group_id, :null => false
t.timestamps null: false
end
end
end
以下模型和獨特的約束:
class UserGroup < ActiveRecord::Base
belongs_to :user
belongs_to :group
validates_uniqueness_of :user, :scope => :group, :message => :not_unique
end
的唯一性驗證工作效果很好,但如果我的應用程序中的競爭線程導致競爭條件並且超過了應用程序級檢查呢?如何編寫遷移以防止在數據庫級別的用戶和組的連接表中出現重複行?
就是這樣?這是否會雙向工作,或者如果一個組添加用戶/用戶添加組? – Riptyde4
是的,它是雙向的。 –
順序對唯一性無關緊要,但只有在查詢第一列或兩者都查詢時才使用索引。這將用於'select * from user_groups where user_id = 1',但不適用於'select * from user_groups where group_id = 1'。 – Iceman