Проверить количество связанных объектов - PullRequest
1 голос
/ 14 сентября 2009

Учитывая это:

class User < ActiveRecord::Base
  has_many :photos
  MAX_PHOTOS = 5
  validate :quantity_of_photos

  def quantity_of_photos
    ???
  end
end

А это:

@user.photos.size  # => 5

Мне нужно, чтобы это не получилось:

@user.photos << Photo.create(valid_photo_attributes)

Как мне сделать эту проверку?

1 Ответ

1 голос
/ 14 сентября 2009

Переместить метод количества фотографий в фотомодель:

class Photo < ActiveRecord::Base

   belongs_to :user
   validates :quantity_of_photos

    def quantity_of_photos
      if new_record? && user.photos.size >= User::MAX_PHOTOS
        errors.add_to_base "You cannot have more than #{MAX_PHOTOS} photos."
      end
    end

end

Срок действия экземпляра ActiveRecord определяется наличием ошибок в его массиве ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...