Вот мои модели:
class Lesson < ActiveRecord::Base
belongs_to :topic, :polymorphic => true
validates_presence_of :topic_type, :topic_id
end
class Subject < ActiveRecord::Base
has_many :lessons, :as => :topic
end
class Category < ActiveRecord::Base
has_many :lessons, :as => :topic
end
Теперь мне нужна форма, которая позволит пользователю создавать или обновлять уроки.Вопрос в том, как я могу предоставить меню выбора, которое предлагает сочетание предметов и категорий?(Для пользователя в данной конкретной форме Предметы и Категории являются взаимозаменяемыми, но в другом месте это не так.)
В идеале это будет выглядеть примерно так:
views / examples / _form.html.haml
= simple_form_for(@lesson) do |f|
= f.input :title
= f.association :topic, :collection => (@subjects + @categories)
Это не сработает, потому что мы будем указывать только topic_id, а также нам нужны topic_types.Но как мы можем указать эти значения?
Полагаю, суть проблемы в том, что мне действительно нужно одно меню выбора, в котором указаны два значения, соответствующие двум разным атрибутам (topic_id и topic_type).Есть ли какой-нибудь изящный безрассудный способ сделать это?
Несколько замечаний:
a) Наследование одной таблицы устранит эту проблему, но я бы хотел этого избежать, так как Категории иСубъекты имеют свои собственные отношения ... Я избавлю вас от подробностей.
б) Я мог бы вытащить некоторые javascript махинации, да?Но это звучит грязно, и если есть более чистый способ сделать это, какой-нибудь помощник в магической форме или что-то в этом роде, то это, безусловно, предпочтительнее.
c) Хотя я использую simple_form, я не предан этому,на случай, если это усложнит дело.
Спасибо