Ruby on rails 使用值数组编写where语句的正确方法
我想不出在一行中为控制器编写where语句的正确方法 我错过了什么Ruby on rails 使用值数组编写where语句的正确方法,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,Activerecord,我想不出在一行中为控制器编写where语句的正确方法 我错过了什么 @food_ranks = FoodRank.where("user_id = ? AND rank = ?", current_user.id, [0, 1, 2]) 这是我试图用三行来写的 @food_ranks = Array.new(FoodRank.where("user_id = #{current_user.id} AND rank = 0")) @food_ranks << FoodRank.whe
@food_ranks = FoodRank.where("user_id = ? AND rank = ?", current_user.id, [0, 1, 2])
这是我试图用三行来写的
@food_ranks = Array.new(FoodRank.where("user_id = #{current_user.id} AND rank = 0"))
@food_ranks << FoodRank.where("user_id = #{current_user.id} AND rank = 1")
@food_ranks << FoodRank.where("user_id = #{current_user.id} AND rank = 2")
是不是把食物列为where语句的字面意思?(未定义的方法)请尝试以下方法:
@food_ranks = FoodRank.where("user_id = ? AND rank IN (?)", current_user.id, [0, 1, 2])
您还可以执行以下操作:
@food_ranks = FoodRank.where(user_id: current_user.id, rank: [0, 1, 2])
问题是您正在传入一个数组,并试图将秩与该数组进行比较 试着这样改变它:
FoodRank.where("user_id = ?", current_user.id, rank: [0, 1, 2])
Rails将从数组中自动生成SQL
IN
语句,因此无需指定该语句。您不必在(?)中写入排名,Rails将为您生成它。我认为,对于第一个查询,仍然需要这样做。对于第二个,你不需要这个。这就是为什么我没有在第二个查询中使用,Rails会自动这样做。
FoodRank.where("user_id = ?", current_user.id, rank: [0, 1, 2])