不幸的是,您不能在同一個活動記錄查詢中執行「包含」和「選擇」。所以這是行不通的...
contacts = UserContact.includes(:users).where("number = ?", '1234').select(:app_id, :number).uniq
但是。
FIRST:APP_ID看起來像它應該叫 「user_ID的」
第二:您正在使用什麼版本的Rails的?如果您使用rails 3.2,則可能需要使用「pluck」方法。因此
user_ids = UserContact.where("number = ?", '1234').pluck(:app_id).uniq
users = User.where(:id => user_ids)
第三:在紅寶石的而不是做這樣的:
arr=[]
contact.each do|c|
arr << c.app_id
end
做到這一點:
arr = contact.inject([]) {|arr, c| arr << c.app_id}
第四:正如我在所有的例子你的語法主要是Rails的2.我以爲你正在使用導軌2?如果是這樣,你可能需要升級。
第五:如果返回多個對象,則使用複數變量名稱。因此
contact = UserContact.....
name=User.....
應該
contacts = UserContact.find.....
users = User.find.....
LAST:
User.joins(:user_contacts).where("user_contacts.number = ?", '1234')
可能是很好的