0

SQLではこれを行います:

SELECT minimummonths WHERE name = "gold"

Ruby on Railsでも同じことをしたいので、注文コントローラーの新しいセクションに次のようにします。

@plan = params[:plan]

@Payplanrow = Payplan.where(:name => @plan).minimummonths

次に、@payplanrowを使用してページに表示しようとしましたが、機能し<%=@Payplanrow %>ません。エラーが発生します:

undefined method `minimummonths' for #<ActiveRecord::Relation:0x007fe30f870ec0>

minimummonths選択したプランの値を印刷したい。値に対応するデータの行は1行だけになり@planます。

私はRubyonRailsにかなり慣れていないので、正しい方向へのポインターを取得しようとしています。私はいたるところを見ましたが、この例はないようです。

4

5 に答える 5

1

問題は、オブジェクトPayplan.where(:name => @plan)の配列を返すことです。Rails 3を使用していると仮定すると、「 ActiveRecordQueryInterfacePayplan」で詳細を読むことができます。

ただし、クエリが1つのレコードのみを返すことが確実な場合は、次のように実行できます。

@Payplanrow = Payplan.where(:name => @plan).first.try(:minimummonths)

Railsの方法は、モデルにスコープを含めることです。

class Payplan < ActiveRecord::Base

  scope :by_name, lambda {|name|
     {:conditions => {:name => name}}
  }

end

#controller 
@Payplanrow = Payplan.by_name(@plan).first.try(:minimummonths)
于 2013-02-24T16:37:46.907 に答える
0

それは実際には最適ではありませんが、次のことができます。

@Payplanrow = Payplan.where(:name => @plan).first.minimummonths
于 2013-02-24T16:23:23.927 に答える
0

それは次のようになります。

Payplan.where(:name => @plan).first.minimummonths
于 2013-02-24T16:35:03.683 に答える
0

pluck値のみを取得するために使用できminimummonthsます:

minimummonths = Payplan.where(:name => @plan).pluck(:minimummonths).first
于 2013-02-24T16:43:01.317 に答える
0

を使用する代わりに、を期待しているときwhere then firstに使用することをお勧めします。findsingle record

 @Payplanrow = Payplan.find_by_name(@plan).try(:minimummonths)
于 2013-02-24T18:04:31.177 に答える