1

プロジェクトで meta_search gem を使用しており、ユーザーと user_details テーブルがあります。

users テーブルには、名前、性別、血液型、生年月日などの不変の情報が含まれている必要があります。

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 のみを取得したい

前もって感謝します

4

1 に答える 1

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" %>
于 2013-03-28T14:45:20.430 に答える