Я создаю приложение ruby on rails, которое хранит любимые публикации пользователей, натолкнулось на проблему и нуждается в некоторой помощи.
Пользователь может добавлять столько разных типов публикаций, сколько выберет, таких как книги, фильмы, газеты, статьи и т. Д. Каждый из этих типов публикаций имеет разные атрибуты, например, книги могут иметь автора и издателя, а также Фильм может иметь режиссера и продюсера. В одной публикации много атрибутов.
Мое приложение в настоящее время выглядит следующим образом: у меня есть ресурс публикаций , в котором хранятся типы публикаций. Существует ресурс под названием attribs , в котором хранятся все атрибуты для конкретной публикации. И, наконец, существует третий ресурс, который называется избранное .
class Publication < ActiveRecord::Base
has_many :attribs
# columns in this model => name, hidden
# example ( :name => "movie", :hidden => false )
end
class Attrib < ActiveRecord::Base
belongs_to :publication
# columns in this model => publication_id, name, datatype
# example (:publication_id => 1, :name => "Movie Title", :datatype => "string")
# example (:publication_id => 1, :name => "Director", :datatype => "string")
end
class Favourite < ActiveRecord::Base
# columns in this model => data, reason
# example (:data => "[serialized form data]", :reason => "some reason why its a fav")
end
Когда пользователь создает новое избранное и выбирает публикацию, я хотел бы, чтобы была сгенерирована форма с атрибутами, которые пользователь выбрал для этой конкретной публикации.
Есть ли способ, которым я могу динамически создать модель / форму с атрибутами, которые хранятся в таблице базы данных?
Поскольку Formtastic является генератором динамических форм, можно ли его использовать для создания формы?
Мне это кажется слишком сложным, но я не могу придумать другого способа сделать это, не имея в своем приложении ужасно большого количества таблиц.