Не удалось сравнить Fixnum с nil при попытке установить ограничения

В моем приложении у меня есть таблица мест, каждое из которых может быть либо бесплатным, либо платным, и у каждого может быть несколько фотографий места.

Я пытаюсь настроить его так, чтобы бесплатные места могли иметь максимум 3 фотографии места, в то время как места премиум-класса могли иметь до 10 фотографий места.

Место проведения.rb

В планах указано:

PLANS = %w[free premium]

Предел места для фото также устанавливается следующим образом:

def photo_limit
    {:free => 3, :premium => 10}[plan]
end

Место проведения фото.рб

Затем у меня есть это, чтобы проверить, достигнут ли предел:

validate :venuephoto_count_within_limit, :on => :create

def venuephoto_count_within_limit
  if self.venue.venuephotos(:reload).count >= self.venue.photo_limit
    errors.add(:base, "Exceeded venue photo limit")
  end
end

Это дает мне эту ошибку:

ArgumentError in VenuesController#update

comparison of Fixnum with nil failed

Контроллер площадки

def update
  @venue = Venue.find(params[:id])
  if @venue.update_attributes(params[:venue])
    flash[:notice] = 'Venue updated successfully'
    redirect_to :back
  end
end

Большое спасибо за любую помощь!


person Dave    schedule 26.10.2011    source источник


Ответы (1)


Ваш хэш {:free => 3, :premium => 10} использует символы в качестве индексов, и план будет строкой.

def photo_limit
  {:free => 3, :premium => 10}[plan.to_sym]
end

буду работать

person Leonid Shevtsov    schedule 26.10.2011
comment
Удивительный! Большое спасибо! Я вернусь через несколько минут, чтобы поставить галочку, очень признателен. - person Dave; 27.10.2011