开发者

Rails Associations Not working and not recognizing classes

开发者 https://www.devze.com 2023-04-13 02:33 出处:网络
I have a weird bug that just popped up with my rails app that I cannot figure out. I recently added a new association to an existing Model and now my previous associations do not want to work properly

I have a weird bug that just popped up with my rails app that I cannot figure out. I recently added a new association to an existing Model and now my previous associations do not want to work properly.

#=> self.user
#=> <# user.id => "1" ...
#=> self.transactions
#=> [<# transaction_id => "1"...
#=> s开发者_运维技巧elf.credit_plan
#=> nil

So the first two associations work fine via, but for some reason credit_plan returns nil and is crashing all my existing working code. Here is the record associations I have.

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


Alright Guys, I figured it out. If I had posted more context of my files, I'm sure someone would have figured it out and helped me sooner.

So basically, when I was setting up my virtual attributes for the credit card form, I accidentally stomped on my own name space by adding :credit_plan as an attribute, which overrides the association.

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
0

精彩评论

暂无评论...
验证码 换一张
取 消