0

私のアプリには、それぞれが無料プランまたはプレミアムプランのいずれかであり、それぞれに複数の会場写真を含めることができる会場のテーブルがあります。

無料の会場は最大3枚、プレミアム会場は最大10枚の会場写真を持てるように設定しようとしています。

会場.rb

計画は次のように設定されています。

PLANS = %w[free premium]

会場写真の制限も次のように設定されています。

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

会場写真.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

助けてくれてありがとう!

4

1 に答える 1

3

ハッシュ{:free => 3, :premium => 10}はシンボルをインデックスとして使用し、計画は文字列になります。

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

動作します

于 2011-10-26T21:20:30.180 に答える