Rails формируют ошибки тега при обнаружении двоичного поля - PullRequest
1 голос
/ 10 декабря 2011

У меня есть тип столбца binary в моей таблице «пользователи», и когда я пытаюсь включить это поле в тег simple_form_for, я получаю сообщение об ошибке.

= simple_form_for @user
  = f.input :secret_number

Вот ошибка-

No input found for binary

Некоторая дополнительная информация, которая может быть полезна - поэтому я храню некоторую зашифрованную информацию в этом столбце.Данные зашифрованы во время сохранения ActiveRecord.Но в форме, представленной пользователю, я хочу показать дополненные данные, что-то вроде - ***** 456 ". Я написал следующий метод для расшифровки / заполнения секретного номера.

def secret_number
  decrypt_and_pad_up(self.secret_number)
end

1 Ответ

3 голосов
/ 10 декабря 2011

Вы можете увидеть, где возникает ошибка в SimpleForm::FormBuilder#find_mapping. Причина, по которой вы получаете эту ошибку, заключается в том, что simple_form спрашивает Rails, какой тип данных содержит данный атрибут - :binary в этом случае (Rails не знает или не заботится о том, чтобы вы переопределили метод secret_number) - в порядке решить, какой тип поля формы генерировать. Поскольку нет способа узнать, какой тип поля должен использовать двоичный атрибут, вы получите эту ошибку.

Естественно, решение - в документах . Если вы хотите, чтобы он отображался как текстовый ввод, используйте параметр :as:

f.input :secret_number, :as => :string
...