2012-04-20 51 views
1

我在我的項目中使用meta_search gem並擁有user和user_details表。如何通過具有匹配條件的父ID獲取最後一個子記錄組

users表中應該有不變的信息,如姓名,性別,血型,birth..etc日期

user_details有地址,手機號碼...等

user.rb

has_many :user_details 

user_detail.rb

belongs_to :user 

我把每個更新我們er_details記錄爲新記錄。 我目前顯示user_details的最後一個記錄用戶的當前記錄

user_details表看起來像

id name  gender phone  user_id 
1. xxx  m  99389989  1 
2 xxx  f  3344444  1 
3 xxx  m  323434  1 
4 xxx yy  f  3324324  2 
5 xxx yyy f  332423  2 

問題:當我用關鍵字搜索,如何抓取每一個最後user_details記錄具有匹配條件的用戶。

:如果我搜索name_starts_with「xxx」的則提取所述ID 1至5,但我不想預先只獲取ID 3和5

由於

回答

0

最後我有固定使用MySQL的MAX方法

scope :last_record_in_each_group, lambda { |name| 
    cond = "user_details.id in (select max(user_details.id) from user_details group by user_details.user_id)" 
    cond << " and upper((CONCAT(first_name,' ', middle_name,' ', last_name))) like ?" 
    {:conditions => [cond, "%#{name.upcase}%"]} 
} 

鑑於

<%= search.text_field :last_record_in_each_group, :placeholder => "User Name" %>