Как найти значение datetime в JSONB с помощью Ransack - PullRequest
0 голосов
/ 16 апреля 2020

Это пример кода, который ищет значение ключа внутри jsonb_column для name

ransacker :name do |parent|    
  Arel::Nodes::InfixOperation.new('->>', parent.table[:jsonb_column_here], 
  Arel::Nodes.build_quoted('name'))
end

ДО мы не используем столбец JSONB, и это работает для поиска с использованием значений даты и времени.

 Ransack.configure do |config|
  config.add_predicate 'between_begin_and_end',
                       arel_predicate: 'between_begin_and_end',
                       formatter: proc { |v| v.to_date },
                       validator: proc { |v| v.present? },
                       type: :string
end

module Arel
  module Predications
    def between_begin_and_end date
      gteq(date.to_date.beginning_of_day).and(lt(date.end_of_day))
    end
  end
end


**Example data:**

jsonb_column {
  "data_created_at"=>2020-03-23 05:10:46 UTC,
  ....
  ....
}

КАК включить мой предыдущий метод теперь в столбец JSONB.

...