0

我有了一個Payoption它可以使用STI子像這樣不同類型的事件模型:模型製作和STI子協會

class Event < ActiveRecord::Base 
    has_one :payoption, dependent: :destroy 
    accepts_nested_attributes_for :payoption  
end 

class Payoption < ActiveRecord::Base 
    belongs_to :event, :polymorphic => true 

PAY_OPTION = ["BankPayoption", "CashPayoption"] 
end 

class BankPayoption < Payoption 
    belongs_to :event 
end 

class CashPayoption < Payoption 
    belongs_to :event 
end 

我創建一個事件和現金/ BankPayoption在相同的控制器這樣,還是有些硬編碼和功能缺失,同時發展:

def new 
    @event = Event.new 
    @event.build_payoption 
end 

def create 

    @event = Event.new(event_params) 
    @event.user_id = current_user.id 

    if params[:event][:payoption_attributes][:type] == "BankPayoption" 
     @payoption = BankPayoption.new 
     @payoption.phone = "0734176395" 
     @payoption.event = @event 
     @payoption.save 
     @event.payoption = @payoption 
    end 

    @event.save 
    redirect_to @event 
end 

兩個事件和BankPayoption被創建和BankPayoption得到corrent事件ID但事件根本不會和遺體得到任何Payoption ID零。認爲存在STI /多態性的問題,但無法弄清楚如何解決它。

在此先感謝

回答

0

我不確定這是否是您的問題。但是你在has_one關聯中缺少as: :event

class Event < ActiveRecord::Base 
    has_one :payoption, as: :event, dependent: :destroy 
    accepts_nested_attributes_for :payoption  
end 
+0

感謝您的回答。這給了我一個「未知的屬性:event_type」在「新」方法的@ event.build_payoption行(在我的帖子中添加)。 –

+0

你真的想要'payoption'上的多態關聯嗎?如果沒有擺脫':polymorphic => true' – usha