预订 - <订单 - <交易
class Booking < ActiveRecord::Base
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :booking
has_many :transactions
end
class Transaction < ActiveRecord::Base
belongs_to :order
end
我需要能够创建Transaction
而不存在Order
或Booking
。
我试图实现以下目标:
创建Transaction
后,会自动创建Order
和Booking
。交易表单可以使用Booking.booking_number
保存到上面自动创建的Booking
。
我对rails非常陌生并尝试了accepts_nested_attributes_for
,Ryan Bates&#39; nested model form part1 screencast和form_fields_for
没有成功。
非常感谢一些指导,不一定是代码。
我的路线如下:
答案 0 :(得分:1)
我需要能够在没有订单或预订的情况下创建交易 现有
糟糕的系统设计 - 交易肯定会关注订单或预订?
从您的问题来看,我强烈建议您先预订或订购。这样您就可以将事务创建为order
或booking
:
#app/controllers/bookings_controller.rb
Class BookingsController < ApplicationController
def create
booking = Booking.new(booking_params)
booking.save
end
end
#app/models/booking.rb
Class Booking < ActiveRecord::Base
before_create :build_transaction #-> creates a blank transaction which can be populated later
end
尽管如此,没有什么可以阻止你创建交易&amp;稍后分配订单
你可以这样做:
#app/controllers/transactions_controller.rb
def create
Transaction.new(transaction_params)
end
#app/models/transaction.rb
Class Transaction < ActiveRecord::Base
after_create :order
def order
self.order.create!([order_details?])
end
end
如果您告诉我更多关于您正在建设的内容,我将能够创建更精确的回复!
答案 1 :(得分:0)
试试这可能有用。
在你的模型中
accepts_nested_attributes_for :order, :allow_destroy => true
根据你的表格改变是真是假