2014-09-24 57 views
0

我有两个型号的[田]:轨道4创建相关对象之后,保存

令[:日期] 输出槽[:一天]

订购belongs_to :delivery_slot

当订单创建,我想要创建一个交货插槽:day设置为订单:date

到目前为止,我已经创建了创建时的顺序是创建输出槽订单控制器的新方法create_delivery_slots,但在这里我很为难的,我如何才能在输出槽:day领域的订单:date

#Create delivery slots if they dont already exist 
def create_delivery_slots 
    existingslots = [] 
    existingslots = DeliverySlot.all.select {|slot| slot.day == @order.date} 
    if existingslots.empty? 
    slot = DeliverySlot.new(:day => @order.date) 
    slot.save! 
    end 

我试过多种方法,但没有运气。我的直觉告诉我,它与强参数有关,但我无法弄清楚...

回答

0

我不确定你是如何设置的,但你可能会想要这样的东西:

class Order < ActiveRecord::Base 
    has_a :delivery_slot 
    after_create => :create_delivery_slots 
    . 
    #other code stuffs 
    . 
    . 
    private 

    def create_delivery_slots 
    existingslots = [] 
    existingslots = DeliverySlot.all.select {|slot| slot.day == self.date} 
    if existingslots.empty? 
     slot = DeliverySlot.new(:day => self.date) 
     slot.save! 
    end 
    end 
end 

这是未经测试,但它应该基本上是你需要的。

+0

谢谢米卡,这确实会创建一个新的交付槽记录。但新记录为空 - “:”的值尚未设置。 – blackfish64 2014-09-24 22:09:30

+0

@ blackfish64那么你很有可能没有及时设定订单的日期。唯一可以想到的是,DeliverySlot没有日期。 – MCBama 2014-09-26 14:27:36

+0

还请确保您使用'self.date'而不是'@ order.date' – MCBama 2014-09-26 15:15:21