У меня здесь, например, пользователь со многими группами и база данных структурирована следующим образом:
class CreateGroups < ActiveRecord::Migration[6.0]
def change
create_table :groups, id: :uuid do |t|
t.uuid :user_id
t.string :name
t.timestamps
end
add_index :groups, :name, unique: true
end
end
Приведенное выше делает name
уникальным для всей базы данных. Я хочу, чтобы name
был уникальным для пользователя (user_id
). Это возможно на уровне базы данных? Чтобы получить что-то подобное, нужно ли мне вместо этого использовать find или create ?
Если у меня два пользователя, они должны иметь возможность создавать одинаковые имена групп, но не должны быть одинаковыми для каждого пользователя:
User.first.groups.first.name #> Bold
User.first.groups.second.name #> Bold (should fail)
User.second.groups.first.name #> Bold (should be ok)
User.second.groups.second.name #> Bold (should fail)