我在我的项目中使用meta_search gem并拥有users和user_details表。
用户表应具有不可更改的信息,如姓名,性别,血型,出生日期......等等
user_details有地址,手机号码等等
user.rb
has_many :user_details
user_detail.rb
belongs_to :user
我将每个更新的user_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 :(得分: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" %>