Ruby on rails Rails作用域和where的数组
我有以下范围:Ruby on rails Rails作用域和where的数组,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有以下范围: 范围:基于任务,->(部门,编号){连接(:任务)。其中('tasks.department=?和tasks.number=?',部门,编号)} 这非常有效,除了偶尔我需要说一些关于tasks.number等于123或456的的内容 我知道ActiveRecord允许我做where(数字:[123456]),但由于这是一个加入,这似乎不起作用 那么,如何在该作用域上传递数组呢?它并不总是一个数组,但需要说明它是什么时候的。您需要为这个数组输入一些duck类型
范围:基于任务,->(部门,编号){连接(:任务)。其中('tasks.department=?和tasks.number=?',部门,编号)}
这非常有效,除了偶尔我需要说一些关于tasks.number等于123或456的的内容
我知道ActiveRecord允许我做where(数字:[123456])
,但由于这是一个加入
,这似乎不起作用
那么,如何在该作用域上传递数组呢?它并不总是一个数组,但需要说明它是什么时候的。您需要为这个数组输入一些duck类型
# I like to use do/end for multi-line blocks, but that is purely a stylistic choice
scope :task_based, ->(dept, number) do
return joins(:task).where('tasks.department = ? AND tasks.number IN ?', dept, number) if number.is_a? Array
return joins(:task).where('tasks.department = ? and tasks.number = ?', dept, number) if number.is_a?
end
以下是您需要做的:
scope :task_based, ->(dept, number){ joins(:task).where('tasks.department = ? and tasks.number in (?)', dept, number)}
上述范围适用于两种情况,即数字为整数或整数数组