Проверьте макс. сумму объекты, связанные с AF

Под Предпочтениями , выберите Java -> , Редактор -> Сохраняют Действия . Проверьте , Выполняют выбранные действия с сохранением и устанавливают флажок Format source code .

Это может или не может быть доступно в предыдущих версиях Eclipse. Я знаю, что это работает в:

Version: 3.3.3.r33x_r20080129-_19UEl7Ezk_gXF1kouft<br>
Build id: M20080221-1800
6
задан Thomas Watson 13 August 2009 в 11:09
поделиться

2 ответа

Если вы вызовете account.users.size вместо account.users.count , он также будет включать пользователей, которые были созданы, но не сохранены в базу данных.

ОДНАКО это не решит полностью вашу проблему. Когда вы вызываете учетную запись в пользователе, он не возвращает тот же экземпляр учетной записи, на который указывает @account , поэтому он не знает о новых пользователях. Я считаю, что это будет «исправлено» в Rails 3, но пока я могу придумать пару решений.

Если вы сохраняете учетную запись одновременно с добавлением пользователей (что я предполагаю, так как вы вызываете update_attributes ), тогда валидация может идти туда.

# in account.rb
def validate_max_users_have_not_been_reached
  errors.add_to_base("You cannot have more than #{maximum_amount_of_users} users on this account.") unless users.size < maximum_amount_of_users
end

Я не уверен, как вы сохраняете связанные модели, но если проверка учетной записи не удалась, их не следует сохранять.

Другое решение - сбросить экземпляр user.account на self при обновлении атрибутов пользователя. Вы можете сделать это в методе установки users_attributes.

# in account.rb
def users_attributes=(attributes)
  #...
  user.account = self
  #...
end

Таким образом, учетная запись пользователя будет указывать на тот же экземпляр учетной записи, поэтому account.users.size должен вернуть сумму. В этом случае вы бы сохранили проверки в пользовательской модели.

Это сложная проблема, но, надеюсь, это дало вам некоторые идеи о том, как ее решить.

16
ответ дан 8 December 2019 в 17:25
поделиться

Причина, по которой он проходит, состоит в том, что update_attributes не проходит проверки.

Также - ваша логика проверяет только существующее количество учетных записей на их максимально разрешенное количество. Расчет количества пользователей, пытающихся добавить, не производится. Я думаю, что эта логика больше подходит модели учетной записи (?).

-2
ответ дан 8 December 2019 в 17:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: