0

次の作品をどのように作成しますか...

Beagle.beagles.where(:snount => "short")

...snoutメソッドIDが定義されているが、テーブルに列Beagleがない場合はどうなりますか?snoutbeagles

4

2 に答える 2

2

スコープ (つまりオブジェクト) が必要な場合は、モデル インスタンス メソッドではなく DB クエリ ロジックを扱うActiveRecord::Relationため、運が悪いと思います。whereただし、メソッドの要件を満たす結果の配列を取得する必要があるだけの場合は、次のように機能します。

Beagle.select { |b| b.snout == "short" }

これにより、DB からすべてのレコードが取得され、必要なレコードが選択されること注意してください。生成された SQL は次のとおりです。

Beagle Load (0.1ms)  SELECT "beagles".* FROM "beagles" 

参照:スコープ内のインスタンス メソッド

于 2012-12-10T09:34:50.213 に答える
1

たぶんこれを試してください

beagles = Beagle.find(:all)
beagles.each do |beagle|
if beagle.snount == "short"
beagles_selected << beagle
end
end

beagles_selected必要なすべてのビーグル犬を含む配列が得られます

于 2012-12-10T09:31:36.993 に答える