Скажите, что у меня есть две модели: пользователи и учетные записи. С каждой учетной записью может быть связано не более n пользователей, а пользователь может быть связан только с одной учетной записью.
Казалось бы, естественно, что пользователь
belongs_to :account
и Аккаунт
has_many :users
Тем не менее, мне не совсем понятны лучшие практики, когда речь идет об ограничении числа ассоциаций с помощью этого объявления has_many. Я знаю, что есть аргумент: limit, но он ограничивает только количество возвращаемых ассоциаций, а не количество, которое может существовать.
Я подозреваю, что ответом будет что-то вроде: before_add. Однако такой подход, по-видимому, применим только к ассоциациям, созданным с помощью <<. Так что он будет вызван, когда вы использовали </p>
@account.users << someuser
но не если вы использовали
@account.users.create
Я также считал, что может быть более практичным реализовать ограничение с использованием before_save в модели User, но, похоже, было бы немного неприемлемо реализовать бизнес-правила Account в модели User.
Какова наилучшая практика для ограничения количества ассоциаций?
Редактировать: n пользователей на учетную запись - это некоторые бизнес-данные, которые хранятся в отдельных учетных записях, а не просто магическое число, которое в коде будет суетиться.