Rails 3.1 ограничивает созданные пользователем объекты - PullRequest
8 голосов
/ 23 октября 2011

Я бы хотел ограничить количество модельных объектов, которые может создать пользователь. Я пробовал ниже, но это не работает. Я понимаю, что в rails 3.1 произошли некоторые изменения, и не знаю, как это сделать сейчас.

class User < ActiveRecord::Base
  has_many :things, :limit => 5, :dependent => :destroy # This doesn't work
end

class Things <ActiveRecord::Base
  belongs_to :user
end

Ответы [ 2 ]

14 голосов
/ 23 октября 2011

Попробуйте что-то вроде этого:

class User < ActiveRecord::Base
  has_many :things
end

class Things <ActiveRecord::Base
  belongs_to :user
  validate :thing_count_within_limit, :on => :create

  def thing_count_within_limit
    if self.user.things(:reload).count >= 5
      errors.add(:base, "Exceeded thing limit")
    end
  end
end

Редактировать : обновлено для Rails 3

3 голосов
/ 22 февраля 2012

Не работает на Rails 3.2.1. Количество всегда равно 0. Я заменил его на self.user.things.size и теперь оно работает.

...