我在这里有一段代码,我真的可以在重构方面使用一些帮助。我需要不同的方法在 rails 的表单中添加关系数据。代码取自http://railscasts.com/episodes/75-complex-forms-part-3,我的问题是我需要同时拥有 Material 模型和 Answer 模型的方法。所以我需要两次完全相同的代码,用“答案”替换“材料”。
看来这应该通过一些动态编程来解决?但我对此完全没有经验。
这是如何解决的?
after_update :save_materials
after_update :save_answers
def new_material_attributes=(material_attributes)
material_attributes.each do |attributes|
materials.build(attributes)
end
end
def existing_material_attributes=(material_attributes)
materials.reject(&:new_record?).each do |material|
attributes = material_attributes[material.id.to_s]
if attributes
material.attributes = attributes
else
materials.delete(material)
end
end
end
def save_materials
materials.each do |material|
material.save(false)
end
end