私はRails 3アプリに取り組んでおり、コントローラーの1つに次のような行があります:
@features = Feature.find(:all, :conditions => ['featured_at < ?', Time.current], :order => 'featured_at ASC')
@feature = @features.find(params[:feature])
アイデアは、いくつかの制約に従ってDBから一連の「機能」を取得し、そのセットから特に1つを選択することです。問題のレコードが DB に存在するが、制約に適合しない場合、それを返したくありません。したがって、私は@features.find
ではなくやっていFeature.find
ます。
私が抱えている問題は@feature.title
、エラーを生成しているビューが必要であることです:
undefined method 'title' for #<Enumerator:0x0000010216efd8>
もちろん、上記をこれに置き換えることで問題を回避できます。ここでは、制約を 2 回定義するだけです。
@features = Feature.find(:all, :conditions => ['featured_at < ?', Time.current], :order => 'featured_at ASC')
@feature = Feature.find(params[:feature], :conditions => ['featured_at < ?', Time.current], :order => 'featured_at ASC')
しかし、これはエレガントではなく、少し冗長に思えます。
最善の解決策は何ですか? ビューでアクセスする必要がある変数/メソッドを欠いているのではなく、@features.find
結果をそのまま処理するにはどうすればよいですか?Feature
Enumerator
これについてご意見をお寄せいただきありがとうございます。