Я пытаюсь добиться следующего:
- Создайте валидатор, чтобы убедиться, что для каждого пользователя существует уникальное имя альбома.
Пожалуйста, смотрите мой код ниже:
Collaboration.rb
class Collaboration < ApplicationRecord
# Relations
belongs_to :album
belongs_to :user
# Validations
validates_uniqueness_of :user_id, scope: [:album_id]
validates_associated :user, :album
end
User.rb
class User < ApplicationRecord
# Relations
has_many :collaborations
has_many :albums, through: :collaborations
end
Альбом
class Album < ApplicationRecord
# Relations
has_many :collaborations
has_many :users, through: :collaborations
# Validations
validates :name, presence: true
end
albums_controller.rb
class AlbumsController < ApplicationController
def create
@album = current_user.albums.new(album_params)
@album.collaborations.new(user: current_user, creator: true)
if @album.save
redirect_to user_albums_path(current_user), notice: "Saved."
else
render :new
end
end
private
def album_params
params.require(:album).permit(:name)
end
end
Я попробовал следующее в модели альбома:
validates :name, uniqueness: { scope: :users }
, а также некоторые пользовательские валидаторы, такие как: https://github.com/rails/rails/issues/20676, работающие для вложенной формы, но все они безуспешно.
У меня нет идей .. Большое спасибо за вашу помощь