2011-10-14 88 views
1

我有一個奇怪的錯誤,只是彈出我的軌道應用程序,我找不出來。我最近添加了一個新的關聯到現有的模型,現在我以前的關聯不想正常工作。Rails協會不工作,不承認類

#=> self.user 
#=> <# user.id => "1" ... 
#=> self.transactions 
#=> [<# transaction_id => "1"... 
#=> self.credit_plan 
#=> nil 

所以前兩個協會的工作通過罰款,但由於某些原因credit_plan返回nil和崩潰我所有的現有的工作代碼。這是我擁有的唱片協會。

class Order < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :credit_plan 
    has_many :transactions, :class_name => "OrderTransaction" 

class CreditPlan < ActiveRecord::Base 
    scope :active, where({:is_active => true}) 
    scope :inactive, where({:is_active => false}) 
    has_many :orders, :class_name => "Order" 

class OrderTransaction < ActiveRecord::Base 
    belongs_to :order 
    serialize :params 
+0

1.您是否在添加關聯後重新啓動服務器? 2.您是否遷移,添加「credit_plans」表,並將「credit_plan_id」添加到'orders'? 3.':class_name =>「Order」'是多餘的。 – bricker

+0

@bricker 1.是2.是3.我認爲這是必要的,但我會試着拿出來看看是什麼。 –

回答

1

好吧夥計們,我想通了。如果我已經發布了更多關於我的文件的上下文,我相信有人會想出來並且幫助我更快。

所以基本上,當我爲信用卡表單設置我的虛擬屬性時,我不小心踩在我自己的名字空間上,通過添加:credit_plan作爲屬性來覆蓋關聯。

class Order < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :credit_plan 
    has_many :transactions, :class_name => "OrderTransaction" 

    validates_presence_of :credit_plan_id, :user 

    attr_accessor :first_name, :last_name, :card_type, :credit_card, 
      :number, :verification_value, :promotional_code, :expires_on, 
      :credit_plan # << This will override associations, delete to fix. 

    validate :validate_card, :on => :create