Колонка по ошибке возвращает ключ от HSTORE - PullRequest
0 голосов
/ 27 ноября 2018

Хорошо, у меня здесь странный вопрос.В приложении Rails 4.0.13 я добавил к модели:

store_accessor :transcoding_meta, :state

Глядя на схему модели (SongVersion), тип transcoding_meta действительноhstore.

Обратите внимание, что в SongVersion есть также столбец state, представляющий собой строковый столбец.

s = SongVersion.ready.last
s.transcoding_meta
=> {"state"=>"finished"}

s.state
=> "finished"

Когда фактически столбец состояния в базе данных сохраняетсякак "active" как и ожидалось.

Почему Rails срабатывает?Могу ли я на самом деле не иметь ключ hstore с тем же именем, что и существующий столбец?Кажется, он должен знать разницу.

1 Ответ

0 голосов
/ 27 ноября 2018

.store_accessor - это макрос, который определяет методы доступа для полей hstore .Поскольку он вызывается внутри тела класса, сгенерированные аксессоры переопределяют для столбцов БД, предоставленных ActiveRecord по умолчанию.Похоже, вы не можете хранить поле и столбец с одинаковым именем в модели.

...