私のアプリでは、ActiveRecord クエリ間でチェーン可能性を維持したいと考えています。しかし、私はいつもそうできるとは限りません。時々私は選択を使用することを余儀なくされます - これは配列を返し、それによってチェーン可能性を破壊します。
特に、アプリに Response というモデルがあります
応答には、ページと呼ばれるメソッドがありますか? 特定の Response オブジェクトのページ番号 (整数) を返します。
def page?
... returns the page number ...
end
メソッド - ページ? - 実行するには、アプリ内の他のモデルを確認する必要があります。つまり、応答テーブルのデータだけに依存することはできません。
今、私はクエリを持っています - on_page(n) - Response モデルクラスで次のように定義されています
def self.on_page(n)
select{ |m| m.page? == n }
end
問題は、上記の select が ActiveRecord::Relation ではなく配列を返すことです。つまり、次のことはできません (「with_scan」は別の ActiveRecord クエリです)。
Response.on_page(3).with_scan
クエリが実行される順序を変更することで、上記を機能させることができます。しかし、それは単なるハックです
「on_page」クエリで select を使用する代わりの方法はありますか? それとも違う使い方?連鎖可能性を維持できる方法はありますか?
助けてくれてありがとう、アビナフ