如何通过具有匹配条件的父ID获取最后一个子记录组

时间:2012-04-20 13:08:31

标签: ruby-on-rails-3 gem meta-search

我在我的项目中使用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

先谢谢

1 个答案:

答案 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" %>