【问题标题】:How find users in database with same content in Ruby on Rails?如何在 Ruby on Rails 中找到具有相同内容的数据库中的用户?
【发布时间】:2017-10-06 08:47:39
【问题描述】:

在我的数据库中,我有列 :inviter 并且一些用户在该列中有相同的内容

我想找到所有内容相同的内容

在我的用户控制器中:

  def foll
    @user = current_user
    @ref = User.find_by_invite(@user.id.to_s)
    if !@ref || !@ref.pay_s || !@ref.pay_1 || !@ref.pay_2 || !@ref.pay_3
      @referals = false
    else
      @referals = User.find_by_invite(@user.id.to_s)
    end
  end

在我看来

<% if @referals != false %>
  <% @referals.each do |user| %>
      <h4>
        <%= link_to user.name, user %> status : Good
      </h4>
  <% end %>
  <% else %>
  <h3>You dont have any referrals</h3>
  <% end %>

当我尝试时出现此错误

undefined method `each' for #<User:0x007f13e41b0068>

【问题讨论】:

  • 当您在 rails 中执行 find_by 时,它会找到符合指定条件的 first 记录。使用where

标签: ruby-on-rails ruby database model-view-controller


【解决方案1】:

这将引发错误,因为

@referals = User.find_by_invite(@user.id.to_s)

将返回单个记录

你可以试试#where查询所有推荐

@referals = User.where(invite: @user.id.to_s)

您也可以在此处参考其他查询 http://guides.rubyonrails.org/active_record_querying.html 希望这会有所帮助

【讨论】:

    【解决方案2】:

    希望得到帮助:

    控制器:

      def foll
        @user = current_user
        @ref = User.find_by_invite(@user.id.to_s)
        if !@ref || !@ref.pay_s || !@ref.pay_1 || !@ref.pay_2 || !@ref.pay_3
          @referals = []
        else
          @referals = User.where(invite: @user.id.to_s)
        end
      end
    

    查看:

    <% if @referals.any? %>
      <% @referals.each do |user| %>
          <h4>
            <%= link_to user.name, user %> status : Good
          </h4>
      <% end %>
    <% else %>
      <h3>You dont have any referrals</h3>
    <% end %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多