【问题标题】:Getting comparison of Fixnum with nil failed when trying to set restrictions尝试设置限制时,将 Fixnum 与 nil 进行比较失败
【发布时间】:2011-10-26 21:17:20
【问题描述】:

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

我正在尝试将其设置为免费场地最多可以有 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

非常感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 comparison fixnum


    【解决方案1】:

    您的{:free => 3, :premium => 10} 哈希使用符号作为索引,计划将是一个字符串。

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

    会起作用

    【讨论】:

    • 太棒了!非常感谢!我会在几分钟后回来打勾,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2013-05-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多