【问题标题】:ROR inner join gives duplicate valueROR 内连接给出重复值
【发布时间】:2014-06-01 11:21:10
【问题描述】:

您好,我通过内部联接得到重复的数据行。我使用 OR 条件编写内部联接。

控制器 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

查看 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 次,并带有重复的请求数据。 提前致谢。

【问题讨论】:

  • 向我们展示您的示例输出。
  • 其中哪一项是重复数据?
  • Ajay5.read 我的问题的最后一行。

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


【解决方案1】:

要从连接中获取唯一值,只需将.uniq 函数添加到调用中。而且,当为多个查询重用一个输入时,您可以使用 ruby​​ 键:值对语法。

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

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 2014-05-25
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多