假设有个 table 叫做 People,有个属性叫做 sex,类型是 string,还有个属性叫 country,类型也是 string
有个 controller 中要做这样的事情:
app/controller/person_controller.rb
class PersonController < ApplicationController
def some_method
sex = params[:sex] # sex可以是nil
country = params[:country] # country可以是nil
# 返回指定sex country的记录 是nil不限制
end
end
我现在想到一种方法是用 scope(根据大佬提醒已经修改)
app/models/person.rb
class Person < ApplicationRecord
# 省略一些validate
scope :by_sex, ->(sex) { where(sex: sex) if sex.present? }
scope :by_country, ->(country) { where(country: country) if country.present? }
end
现在的问题是,怎么改动支持一种 by_sex(!"male") 查询不是 male 的方法?
·使用where.not就行了 是我想多了 hmm