でレコードを見つけ、私は2つのモデルがあります:RailsのHABTMと関連がない
class User < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
has_and_belongs_to_many :users
end
私はスコープ(それは重要です - 効率化のため、チェーンスコープへの能力を)したい」doesnのユーザーを返します。 tはに属します。ANYグループ。 多くの試行のあと、スコープの代わりにメソッドを実行するのに失敗しました。collect
をUser.all
にすると、醜いです。
助けが必要ですか?
多分2番目の質問のために: 私は、与えられたグループに属しているユーザーを返すスコープを作ることができました(IDの配列として与えられます)。
scope :in_groups, lambda { |g|
{
:joins => :groups,
:conditions => {:groups => {:id => g}},
:select => "DISTINCT `users`.*" # kill duplicates
}
}
もっと良いことができますか? (Rails 3.0.9の使用)
ありがとう、それはトリックをしました:) – schiza
あなたはDISTINが必要でしょうか?この場合、返された結果の結合関係が存在しないため、ユーザーの繰り返しはありません。 –
'DISTINCT'は必要ありません。私はRails 4以上に必要な新しい構文を追加しました(私は思っています)。 – slhck