Не удалось получить сравнение Fixnum с nil при попытке установить ограничения - PullRequest
0 голосов
/ 27 октября 2011

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

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

Venue.rb

Планы установлены как:

PLANS = %w[free premium]

Лимит места съемки также устанавливается как:

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

Venuephoto.rb

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

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

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

1 Ответ

3 голосов
/ 27 октября 2011

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

...