質問

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 それには、私がビューでアクセスする必要がある変数/方法がありませんか?

これについての考えをありがとう。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top