您好我将此关联定义为has_many,我希望这样做才能让accepts_nested_attributes_for工作。
def work_days
work_days = WorkDay.user_id_equals(self.user_id).company_id_equals(self.company_id)
end
accepts_nested_attributes_for :work_days
什么是好的解决方案?无论如何我可以说这是一个关联吗?
- Rails 3.0.7
答案 0 :(得分:1)
首先,我会像这样编写work_days
方法:
def work_days
WorkDay.where(:user_id => user_id, :company_id => company_id)
end
接下来,accepts_nested_attributes_for
实际上只适用于真正的关联,所以我会定义一个这样的方法:
def work_days=(work_day_params)
# iterate over work_day_params and define new work day objects as required
end
(我的方法名称可能有误)
在你的表格中你会有这样的东西:
<% f.fields_for :work_days do |work_day| %>
<%= render :partial => "work_days/fields", :locals => { :f => work_day } %>
<% end %>
在那部分你会得到一个工作日所需的一切。提交此表单后,应将params作为params[:nest][:work_days]
发送给控制器,并使用模型中定义的work_days=
方法,它应接受它们并像accepts_nested_attributes_for
一样创建它们。