Я создаю простое приложение и хочу иметь возможность хранить строки json в базе данных. У меня есть интерфейс таблицы со столбцом json, и я хочу, чтобы моя модель рельсов проверяла значение строки. Примерно так:
class Interface < ActiveRecord::Base
attr_accessible :name, :json
validates :name, :presence => true,
:length => { :minimum => 3,
:maximum => 40 },
:uniqueness => true
validates :json, :presence => true,
:type => json #SOMETHING LIKE THIS
:contains => json #OR THIS
end
Как мне это сделать?
Самый простой и изящный путь, imo. Вершина upvoted ответы или возвратит true при передаче строки, содержащей целые числа или плавания, или бросит ошибку в этом случае.
def valid_json?(string)
hash = Oj.load(string)
hash.is_a?(Hash) || hash.is_a?(Array)
rescue Oj::ParseError
false
end