我有一个带有默认{}的jsonb列,添加了键"home_page":"1" (update_attribute和save.)。
我在模型上增加了一个范围-
scope :home_page, -> { where("my_column ->> 'home_page' = ?", "1") }
无论我做什么,我总是得到一个空洞的结果。
帮助:(
rails - 5.2.2,ruby-2.5,db - PostgreSQL 10.3
发布于 2018-10-12 13:58:27
您的范围正在运行。
class Thing < ApplicationRecord
scope :home_page, -> { where("my_column ->> 'home_page' = ?", "1") }
end正如这个通过的规范所示:
require 'rails_helper'
RSpec.describe Thing, type: :model do
after(:each) { Thing.destroy_all }
describe '.home_page' do
it "includes records with home_page: 1" do
thing = Thing.create(my_column: { home_page: 1 })
expect(Thing.home_page).to include thing
end
it "includes records with home_page: '1'" do
thing = Thing.create(my_column: { home_page: '1' })
expect(Thing.home_page).to include thing
end
it "does not return records that do not match the criteria" do
Thing.create(my_column: { home_page: 0 })
Thing.create(my_column: { xhome_page: 1 })
expect(Thing.home_page).to be_empty
end
end
end相反,错误出现在您的测试方法或设置中。例如,您可以尝试调用.save!来查看是否存在任何验证错误。
https://stackoverflow.com/questions/52774863
复制相似问题