ruby on rails 最长用的方式是用‘and’来筛选数据,如果想用‘or’那么需要用到gem arel
- 安装arel
在gemfile中添加如下行
gem ‘arel’, ‘~> 6.0.0’
然后运行bundle install
arel相关帮助文档在如下url中
https://rubygems.org/gems/arel - 使用
首先我们假设这里有三个table叫people,name,job,我们想选出people表中两个元素:people_name和people_job,在两个list:name_list,job_list中的数据项。
其中name_list是从name表中得到的,job_list是从job表中得到的。
代码如下:
@names = Name.all
@jobs = Job.all
#把ActiveRecord转化为array
name_list = @names.map {|i| i.person_name }
job_list = @jobs.map{|i| i.job_name}
t =People.arel_table
@result=People.where(t[:people_name].in(name_list).or(t[:people_job].in(job_list)))