sql - ROR 内连接给出重复值

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

你好,我通过内部连接获取了重复的数据行。我编写了带有 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/

相关文章:

mySQL按值求和

sql - SQL中AND与WHERE子句的用法

ruby-on-rails - 在 RSpec 请求规范中 stub Controller 操作

ruby-on-rails - 安装带有 bundle 的 Factory Girl 3.3 会导致 Ruby 版本错误

azure - `where * contains ` 和 `search` 在 KQL 中是同一个运算符吗?

java - Java 中的递归搜索

search - IntelliJ 文件掩码不适用于简单的排除文件模式!为什么?

mysql - mysql中的字符串连接

php - Web 应用程序的超快速数据库访问 - SQL 或 NoSQL,解释型 PHP 或编译型 C?

ruby-on-rails - 来自控制台的 Rails 缓存不返回零