私はFoo
のコレクションを持っています。そのコレクションを繰り返し処理するクラスメソッドを作成し、そのコレクション内のすべてのオブジェクトに属性の値がある場合はtrue
を返します。それ以外の場合、クラスメソッドはfalse
を返します。Rails:モデルのクラスメソッド内でコレクションを繰り返す
私は次のことを試みたが、それは動作しません:
class Foo < ActiveRecord::Base
def self.all_have_number_value_999?
each do |foo_object|
return false if foo_object.number_val != 999
end
return true #all objects have #number_val == 999
end
end
は今、私は何とかFoo
オブジェクトのコレクションを得たと仮定します。私はFooオブジェクトのコレクションをどのように取得するのかを調整しますが、重要性はnumber_value_999?
がそのコレクションを反復処理できることです。言い換えれば、いくつかの未知のスコープが、手前のFoo
オブジェクトのコレクションを生成しました。そのコレクションを繰り返し処理したいだけです a Foo
クラスメソッド内です。
Foo.where(id: [123, 456]).all_have_number_value_999?
コレクションを反復する方法がわからないため、クラスメソッドで不平を言っています。だから私の質問です:どのようにモデルのクラスメソッド内のコレクションを反復処理するのですか?
は、あなたの答えをありがとう。上記の私の更新された質問をご覧ください。私はもっと説明的にしようとしました。あなたはここでは良い答えがありますが、私の質問がどんなものかをもっと詳しく説明したほうがはっきりと分かります。 – Neil
最新のアップデートのようですか? –