Findは、オブジェクトではなく、列挙器を返すことです
-
29-10-2019 - |
質問
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
それには、私がビューでアクセスする必要がある変数/方法がありませんか?
これについての考えをありがとう。
正しい解決策はありません
所属していません StackOverflow