Удалите фигурные скобки, так как она представляет собой полный ха sh. Вам необходимо получить json данные, содержащие указанный ключ и значение c.
ransacker :within_json do |parent|
Arel.sql("contacts.json_data::text")
end
Эта часть верна, если вы используете PostgreSQL. Если вы используете MySQL, вы можете сделать это следующим образом:
ransacker :within_json do |parent|
Arel.sql("contacts.json_data")
end
Эти данные хранятся в виде текста в базе данных, поэтому нам просто нужно найти точный текст. Это можно сделать с помощью
Contact.ransack("within_json_cont" => '"key":"value"')
. И если вы хотите найти определенное значение c для ключа, вы можете создать вымогателя
ransacker :key do |parent|
Arel::Nodes::InfixOperation.new('->>', parent.table[:json_data],
Arel::Nodes.build_quoted('$.key'))
end
Надеюсь, это поможет. Удачи