У меня есть модель с сериализованным хешем в качестве поля. Я пытаюсь создать форму, которая позволяет пользователям заполнить это. Есть ли способ использовать Rails form_for helper для краткого построения хеша?
Модель - это Статья, и у Статьи может быть много авторов, которые хранятся в сериализованном хэше.
class Article
serialize :authors, Hash
end
Хэш авторов хранит информацию о каждом авторе, который внес вклад в статью, и может иметь множество необязательных атрибутов. Авторы руководствуются порядком их появления. Вот пример того, как может выглядеть такой хеш:
{1 => {: name => "Уильям Джонс",: contrib => "Написал текст этого вопроса"}, 2 => {: name => "Билли Боб",: contrib => "Получил кофе для Уильяма ",: level =>" Minor "}
У меня есть форма, которая вроде бы подходит для этого, где я использую помощник form_for Rails, но я вынужден использовать text_field_tag и другие не-специфичные для модели помощники для генерации хеша авторов. Например, где key_num - это переменная, переданная в часть:
<%= text_field_tag "article[authors][#{key_num}][name]",
article[authors][#{key_num}] ? article[authors][#{key_num}][:name] : nil %>
Очевидно, это чертовски уродливо и неясно. Есть ли лучший способ сделать это, я скучаю?
Я работаю над статьями, и по этой причине среди прочих причин чрезвычайно полезно использовать сериализованный хэш вместо того, чтобы объединять эту концепцию авторов в отдельную подмодель.