你好,我通过内部连接获取了重复的数据行。我编写了带有 OR 条件的内部连接。
Controller userscontroller.rb
@users = User.search(params[:search])
@users = User.joins([:requests]).where("name LIKE ? OR destination LIKE ?","#{params[:search]}%", "#{params[:search]}%")
查看 searches/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 次。 提前致谢。
最佳答案
要从联接中获取唯一值,只需将 .uniq
函数添加到调用中即可。此外,当为多个查询重复使用一个输入时,您可以使用 ruby 键:值对语法。
@users = User.joins([:requests])
.where("name LIKE :search OR
destination LIKE :search",
{search: params[:search]})
.uniq
关于sql - ROR 内连接给出重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23128875/