내가 단체와 모델을 다음 있습니다 :accepts_nested_attributes_for 및 2 차 협회, 중첩 된 형태
class Order < ActiveRecord::Base
has_many :guests
has_many :customers, :through => :guests
accepts_nested_attributes_for :customers
end
class Customer < ActiveRecord::Base
has_many :guests
has_many :orders, :through => :guests
has_many :slips
accepts_nested_attributes_for :slips
end
class Slip < ActiveRecord::Base
belongs_to :order
belongs_to :customer
end
class Guest < ActiveRecord::Base
belongs_to :order
belongs_to :customer
end
내 중첩 형식은 다음과 같습니다 : 주문 저장이 설정으로
<!-- general form -->
<%= form_for(@order) do |f| %>
<% f.fields_for :customers do |builder| %>
<%= render "customer_fields", :f => builder %>
<% end %>
<%= f.submit %>
<% end %>
<!-- partial customer_fields -->
<p>
<%= f.label :name%><%= f.text_field :name %>
<% f.fields_for :slips do |builder| %>
<%= render "slip_fields", :f => builder %>
<% end %>
</p>
<!-- partial slip_fields -->
<p><%= f.label :quantity%><%= f.text_field :quantity %></p>
예상대로 작동, 하지만 난 order_id 슬립으로 저장해야합니다, 그래서 주문 < 사이의 참조가> 미끄러 져. 이 설정으로 참조가 느슨합니다. 모든 관련 고객을 확보 할 수는 있지만 주문과 관련된 고객의 모든 관련 전표를받습니다. 내 모델 여기
분야 : 주문 -> 아이디
고객 -> ID
고객 -> ID, ORDER_ID,
슬립 CUSTOMER_ID -> ID를, ORDER_ID, CUSTOMER_ID
주문 결과는 다음과 같아야합니다.
- 주문
- 고객
- 슬립 1
- 슬립 2
- 고객 B
- 슬립 1
- 슬립 2
- 고객
- 슬립 1
- 슬립 2
- 슬립 3
- 고객
나는이 작업을 수행하는 방법을 아무 생각도 없어.
나는 어떻게 해야할지 상상할 수 있지만, 새로운 주문의 경우 매우 복잡합니다.중첩 된 리소스에 오래된 학교 가상 속성을 사용할 수 있지만 여기에는 현대적인 'accepts_nested_attributes_for'가 없습니다. – fl00r
slip_id에 order_id를 전달할 수있는 고리가 있습니까? – wdbmh
솔루션을 설명하는 데 의견을 추가했습니다. – fl00r