tôi có 2 mô hình:Rails habtm và tìm kiếm kỷ lục với hiệp hội không
class User < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
has_and_belongs_to_many :users
end
Tôi muốn thực hiện một phạm vi (đó là quan trọng - cho hiệu quả và cho khả năng phạm vi chuỗi) trả về người dùng đó doesn' t thuộc về ANY Nhóm. Sau nhiều lần thử, tôi đã thất bại khi thực hiện một phương thức thay vì phạm vi, làm cho collect
trên User.all
xấu và không đúng.
Bất kỳ trợ giúp nào?
Và có thể cho câu hỏi thứ 2: Tôi đã quản lý phạm vi trả về Người dùng thuộc bất kỳ nhóm nào đã cho (được cho là một mảng của id).
scope :in_groups, lambda { |g|
{
:joins => :groups,
:conditions => {:groups => {:id => g}},
:select => "DISTINCT `users`.*" # kill duplicates
}
}
Nó có đẹp hơn/đẹp hơn không? (Sử dụng Rails 3.0.9)
cảm ơn, nó đã thực hiện thủ thuật :) – schiza
Bạn có cần DISTIN không CT trong trường hợp này, nơi sẽ không có mối quan hệ tham gia cho kết quả trả về, và do đó không có sự lặp lại của người sử dụng? –
'DISTINCT' là không cần thiết. Tôi đã thêm cú pháp mới cần thiết cho Rails 4 trở lên (tôi nghĩ). – slhck