使用 ActiveRecord::TypedStore 查询布尔值的语法是什么(Github 链接)?
尝试以下方法似乎不起作用?并抛出以下错误:
PG::UndefinedFunction:错误:运算符不存在:文本=布尔值
current_user
.companies
.where("holiday_request_settings ->> :key = :value",
key: "enable_holiday_requests",
value: true)
如果我尝试以下操作,则没有结果:
current_user
.companies
.where("holiday_request_settings ->> :key = :value",
key: "enable_holiday_requests",
value: "true")
公司目前拥有以下数据:
holiday_request_settings: {
"enable_holiday_requests"=>true,
"holiday_allowance_days"=>20
}
这是公司模型上的代码:
class Company < ApplicationRecord
has_many :holiday_requests
typed_store :holiday_request_settings, coder: JSON do |s|
s.boolean :enable_holiday_requests, default: false
s.integer :holiday_allowance_days
end
end
公司模型迁移:
add_column :companies, :holiday_request_settings, :json
有什么想法吗?
抱歉来晚了
我的解决方案是在包含 TypedStore json 对象的类上创建一个作用域
这样我就不会在其他地方弄乱代码,并且以后可以轻松地重用它。
对于这个用例,它可能是:
scope : enabled_holiday_requests, -> { where("holiday_request_settings ->> 'holiday_request_settings' = 'true'") }
然后像这样查询:
current_user.companies.enabled_holiday_requests