3

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 に答える