1:N の関係を持つ 2 つの異なるモデルがあります。それらに「myobject」と「related」という名前を付けましょう
class Myobject < ActiveRecord::Base
has_many :related
scope :without_related, includes(:related).select{ |o| o.related.size == 0 }
end
class Related < ActiveRecord::Base
end
Myobjects から Related への新しい割り当てを作成しない限り、定義されたスコープはうまく機能しているようです。
- Direct rails c コマンド "Myobject.includes(:related).select ... (Scope で定義) が期待どおりに機能する
- スコープ「Myobject.without_related」への呼び出しは、その間に割り当てられたオブジェクトを引き続き返します
Railsコンソールの再起動やWebrickの再起動で直るそうです。しかし、オブジェクト間の関係が変更されたという理由だけで、常に Web アプリケーションを再起動できるとは限りません ;)
この問題を修正したり、より良い方法でスコープを記述する方法はありますか?
PS: このクエリは、その名前を group_method として Myobject モデルの形式で grouped_select に渡すスコープとして必要です。