2012-03-24 10 views
0

私はさまざまな方法でクエリに結合しようとしていますが、私は全く運がありません。私が最初に入力したクエリに応じて、どちらか一方が返されます。私はfor_group_with_accountのすべてのエントリとfor_task_with_accountのすべてのエントリを取り、1つのリストを作成するようにします。私が結合したい条件ではなく、それぞれの結果を組み合わせたものです。希望は意味をなさない。ARクエリをマージする際の問題

ここに私のチケットモデルのスコープです:これらのどれもが、実際には二つを取っていませんそれでも

scope :for_account, lambda { |account| for_task_with_account(account) + for_group_with_account(account) } 
    scope :for_account, lambda { |account| for_task_with_account(account) & for_group_with_account(account) } 
    scope :for_account, lambda { |account| for_task_with_account(account) && for_group_with_account(account) } 

:私は、私も試してみたスコープを組み合わせて、最後のスコープについて

scope :for_group_with_account, lambda { |account| joins(:group => :accounts).where("accounts.id = ?", account.id) } 
    scope :for_task_with_account, lambda { |account| joins(:tasks => :account).where("accounts.id = ?", account.id) } 
    scope :for_account, lambda { |account| for_task_with_account(account).merge(for_group_with_account(account)) } 

リストを作成し、それらを結合する。非常に非常にイライラ。私が間違っていることはありますか?

ありがとうございました。

答えて

0
scope :for_account, lambda { |account| for_task_with_account(account).for_group_with_account(account) } 
+0

なし。その結果、他のスコープの一部である 'for_group_with_account(account)'のみが返されます。 – Marc

+0

スコープのみがチェーン化できますか、単純なクラスメソッドが必要でしょうか? – MikDiet

関連する問題