Я думаю, что моя первая версия этого вопроса была слишком сложной и показала неверную попытку решения проблемы.Рассмотрим модель в этом гипотетическом файле миграции:
class CreateProjects < ActiveRecord::Migration
def self.up
create_table :projects do |t|
t.references :oem1
t.references :oem2
t.references :oem3
t.timestamps
end
end
def self.down
drop_table :projects
end
end
Для этой программы необходимо:
- Разрешить пользователю назначать значения oem1, oem2 и oem3 из каплисписок производителей.
- Разрешить администратору или опытному пользователю добавлять или удалять значения в списке, из которого будут выбирать пользователи.
Вторая цель легко достигается созданием такой модели, какпоказано в этом файле миграции:
class CreateOems < ActiveRecord::Migration
def self.up
create_table :oems do |t|
t.string :name
t.timestamps
end
end
def self.down
drop_table :projects
end
end
Если бы у меня не было трех уникальных переменных OEM в модели PROJECTs, я бы просто сделал PROJECT: own_to oems и OEM: has_many projects и просто используйте collection_select , чтобы выбрать имя OEM-производителя из модели OEM-производителей и присвоить его эталонной переменной OEM-модели в модели PROJECTs.Однако у меня есть три OEM-переменные, и все они не могут быть названы OEM.Итак, насколько я знаю, я не могу связать все эти три переменные с переменной OEM.name в раскрывающемся списке collection_select.
Итак, что мне делать?Есть ли другой способ достичь этих двух целей?