使用值数组写where语句的正确方法

Luk*_*mer 2 ruby activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我无法弄清楚在一行中为我的控制器写这个where语句的正确方法.

我在这里错过了什么?

@food_ranks = FoodRank.where("user_id = ? AND rank = ?", current_user.id, [0, 1, 2])
Run Code Online (Sandbox Code Playgroud)

这是我尝试用3行写的.

@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")
Run Code Online (Sandbox Code Playgroud)

@food_ranks正确显示这样的对象.为什么现在不让我这样做呢?

 @food_rank each do |rank|
   rank.user_id
 end
Run Code Online (Sandbox Code Playgroud)

@food_ranks字面意思是where声明吗?(未定义的方法)

K M*_*lam 5

试试这种方式:

@food_ranks = FoodRank.where("user_id = ? AND rank IN (?)", current_user.id, [0, 1, 2])
Run Code Online (Sandbox Code Playgroud)

你也可以这样做:

@food_ranks = FoodRank.where(user_id: current_user.id, rank: [0, 1, 2])
Run Code Online (Sandbox Code Playgroud)