В настоящее время я несколько застрял, пытаясь найти элегантное решение моей следующей проблемы:
Допустим, у меня есть следующие классы:
class Event < ActiveRecord::Base
belongs_to :reg_template, :class_name => "EmailTemplate"
[...]
end
class EmailTemplate < ActiveRecord::Base
has_many :events
[...]
end
И представление, которое содержит:
<%= f.collection_select(:reg_template_id, EmailTemplate.all, :id, :name) %>
Каков рекомендуемый способ обработки этого поля формы в контроллере действий?
Наличие отношения 1: 1 между Event и EmailTemplate означает, что Rails не генерирует reg_template_id и reg_template_id = method (как это было бы для отношения 1: n), поэтому попытки прочитать или присвоить это поле завершатся неудачно с
unknown attribute: reg_template_id
при попытке вызвать
Event.update_attributes
Использование
<%= f.collection_select(:reg_template, EmailTemplate.all, :id, :name) %>
вместо этого также не очень помогает, так как потерпит неудачу с:
EmailTemplate(#70070455907700) expected, got String(#70070510199800)
Полагаю, мне не хватает чего-то ужасно очевидного, так как я думаю, что довольно часто обновлять экземпляр модели со ссылкойк другому объекту через collection_select.