3

尝试编写具有 3 个基本条件的辅助方法。添加第三个尝试将当前用户排除在结果之外的结果会导致错误。

  def male_soccer_players
    return User.where(:gender => "male", :soccer => true, :id != current_user.id)
  end

错误是

app/controllers/application_controller.rb:12: syntax error, unexpected ')', expecting => 
4

3 回答 3

1

为什么不创建一个范围?

scope :except, ->(user) { where.not(id: user) }

在你的情况下:

def male_soccer_players
  User.except(current_user).where(:gender => "male", :soccer => true)
end

或者,如果您愿意,如果您对可重用性感兴趣,您可以更进一步并创建其他范围:

scope :male, -> { where(gender: "male") }
scope :soccer_player, -> { where(soccer: true) }

def male_soccer_players
  User.male.soccer_player.except(current_user)
end
于 2013-12-04T17:20:48.740 回答
1

:id != current_user.id Rails中的问题.where仅通过哈希尝试

def male_soccer_players
  User.where(:gender => "male", :soccer => true).where('id != ?', current_user.id)
end

或者

def male_soccer_players
  User.where('gender = ? and soccer = ? and id != ?', "male", true, current_user.id)
end
于 2013-12-04T17:14:23.957 回答
0

尝试这个:

 def male_soccer_players
        return User.where(:gender => "male", :soccer => true).where("id not != ", current_user.id)
    end
于 2013-12-04T17:20:48.070 回答