我有两个主要模型:产品和服务。您可以创建与特定产品或服务相对应的问题。
用户通过创建与问题相对应的故障单来响应问题。或者,用户可以直接从产品或服务创建故障单。
创建故障单时,会显示与故障单所属的产品或服务相对应的任何先前(未响应)问题的列表,并且这些问题可以添加到故障单中。还可以创建新问题并将其添加到故障单中。
我想将两个数组unresponded_product_issues和unresponded_service_issues合并为一个数组。我如何将两个结合起来(即通过:产品和:服务)?
我正在使用Rails 3(3.2)。
class Service < ActiveRecord::Base
has_many :tickets
has_many :issues
end
class Product < ActiveRecord::Base
has_many :issues
has_many :tickets
end
class Issue < ActiveRecord::Base
belongs_to :product
belongs_to :service
end
class Ticket < ActiveRecord::Base
belongs_to :service
belongs_to :product
has_many :issues
has_many :unresponded_product_issues, :through=>:product, :source=>:issues, :conditions=>{:ticket_id=>nil}
has_many :unresponded_service_issues, :through=>:service, :source=>:issues, :conditions=>{:ticket_id=>nil}
accepts_nested_attributes_for :unresponded_product_issues
accepts_nested_attributes_for :unresponded_service_issues
end
更新:回应@ SteveTurczyn在下面的评论,我尝试声明如下方法:
def unresponded_issues
unresponded_product_issues + unresponded_service_issues
end
我的erb模板中有一个表单(下方),我遇到的问题是以下错误:
ActionView::Template::Error (undefined method `id' for nil:NilClass):
<%= form_for [@ticket] do |f| %>
28: <%= f.fields_for :unresponded_issues do |issue| %>
29: <tr>
30: <td><%= issue.check_box :responded,
31: :id => "#{@ticket.id}-#{issue.object.id}" %></td>
请注意,如果迭代unresponded_product_issues
或unresponded_service_issues
,我会收到相同的错误,如果我将accepts_nested_attributes_for :unresponded_product_issues
和accepts_nested_attributes_for :unresponded_service_issues
添加到故障单模型,则错误消失。
我尝试添加导致错误accepts_nested_attributes_for :unresponded_issues
的{{1}}。