ROR内连接给出重复值

时间:2014-04-17 09:03:12

标签: sql ruby-on-rails search ruby-on-rails-4 inner-join

你好我通过内连接得到重复的数据行。我用OR条件写内连接。

控制器 userscontroller.rb

@users = User.search(params[:search])
@users = User.joins([:requests]).where("name LIKE ? OR destination LIKE ?","#{params[:search]}%", "#{params[:search]}%")

查看 searching / index.html.haml

%aside.span6
  = form_tag(:users, method: "get") do
    = text_field_tag "search", params[:search], placeholder: "Enter Name"
    %br/
    = submit_tag "Search", name: nil, class: "btn-custom-darken"
    %br/
    %br/
- @users.each do |user|
 = render user
= will_paginate @users

查看 users / index.html.haml

%div{align: "center"}
%b List of Users
- if current_user != (@user)
%ol.microposts
- @users.each do |user|
= render user

问题是搜索后作为输出打印的重复数据。如果用户发布了3个请求,则用户将作为输出打印3次。因此,用户的图像被打印3次并具有重复的请求数据。 提前致谢。

1 个答案:

答案 0 :(得分:1)

要从联接中获取唯一值,只需将.uniq函数添加到呼叫中即可。而且,当重复使用单个输入进行多个查询时,您可以使用ruby key:value pair语法。

@users = User.joins([:requests])
             .where("name LIKE :search OR 
                     destination LIKE :search",
                     {search: params[:search]})
             .uniq