Как мне использовать метод ActiveBecord .build и передать атрибуты в формате JSON? - PullRequest
0 голосов
/ 23 ноября 2010

Я извлекаю записи из очереди сообщений в формате JSON и хочу использовать метод ActiveBecord .build, если я могу просто передать запись и построить объект.

Как мне это сделать?Есть ли недостатки этого подхода?

1 Ответ

1 голос
/ 23 ноября 2010

В принципе, вы можете использовать YourModel.new.from_json(json_string), но как это ведет себя, зависит от логического значения ActiveModel::Base.include_root_in_json. Сначала установите значение false, если ваш json - простой хеш / объект, или оставьте его как true (по умолчанию), если ваш json - это тип вложенного хеша, создаваемого to_json (снова по умолчанию).

Все, что делает этот метод, это декодирует json в хеш и вызывает self.attributes = hash, так что вы можете легко сделать это сами.

Что касается недостатков, то в этом процессе нет ничего особенного. По сути, вы делаете то же самое, что делаете в стандартном create методе контроллера, изобилует валидациями, ограничениями attr_accessible и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...