试图设置限制时,获取Fixnum与nil的比较失败



在我的应用程序中,我有一个场地表,每个场地都可以采用免费或高级计划,每个场地都可以有多个场地照片。

我正在尝试设置它,以便免费场馆最多可以有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

非常感谢您的帮助!

您的{:free => 3, :premium => 10}散列使用Symbols作为索引,并且计划将是一个String。

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

最新更新