почему мой запрос области рельсов на jsonb не работает? - PullRequest
0 голосов
/ 12 октября 2018

У меня есть столбец jsonb со значением по умолчанию {}, добавлен ключ "home_page":"1" (update_attribute и save ...).

Я добавил область в модель -

scope :home_page, -> { where("my_column ->> 'home_page' = ?", "1") }

независимо от того, что я делаю, я всегда получаю пустой результат.

help: (

rails - 5.2.2, ruby ​​-2,5, дБ - PostgreSQL 10,3

1 Ответ

0 голосов
/ 12 октября 2018

Ваша область действия работает .

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!, чтобы узнать, есть ли какие-либо ошибки проверки.

...