2014-04-17 25 views
3

你好,我通過內部連接獲得重複的數據行,並且我用OR條件編寫內部連接。ROR內部連接給出重複值

控制器userscontroller.rb

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

查看搜索/ 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 

查看用戶/ 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次,重複的請求數據。 在此先感謝。

+0

向我們展示您的示例輸出。 – Pavan

+0

[示例輸出圖像](http://i.stack.imgur.com/i2BD2.png)@Pavan –

+0

其中哪一個是重複數據? – Pavan

回答

1

要從聯接中獲取唯一值,只需將.uniq函數添加到呼叫中即可。而且,當重複使用一個單一輸入進行多個查詢時,您可以使用ruby key:value pair語法。

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

我只是在最後寫uniq。感謝@約翰 –