Witam,
mam problem z Devise oraz z zakładaniem kont many-to-many w takiej konfiguracji:
Moja konfiguracja modeli:
class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :confirmable, :lockable, :rememberable, :trackable, :validatable
has_many :accounts_users, inverse_of: :user has_many :accounts, through: :accounts_users
accepts_nested_attributes_for :accounts end
class Account < ApplicationRecord has_many :accounts_users has_many :users, through: :accounts_users
validates :identifier, presence: true, uniqueness: true end
class AccountsUser < ApplicationRecord belongs_to :account belongs_to :user
validates_uniqueness_of :account_id, scope: :user_id end
No i widok:
= simple_form_for resource, as: resource_name, url: registration_path(resource_name) do |f|
= devise_error_messages!
= f.simple_fields_for :accounts, resource.accounts.build do |account|
= account.input :identifier, autofocus: true
= f.input :email
= f.input :password
= f.button :submit
I teraz tak… zakładanie kont działa, logowanie także. Problem jest podczas walidacji typu uniqueness dla emaila, gdyż za każdym razem wyświetla mi, że email już istnieje w bazie. Wiem że jest to spowodowane po części walidacją devise (:validatable) nie mniej jednak nie wiem jak tą walidację poprawnie zapisać dla modelu User.
Dodam, że użytkowniki może rejestrować się dowolną ilość razy w obrębie jednego konta (identifier z modelu Account). Tak więc każda kolejna rejestracja to powinna być nowa krotka w tabli accounts_users zaś pierwsza rejestracja w tabeli users także.
Macie jakieś podpowiedzi jak to poprawnie wykonać?
Dzięki