在has关系中混淆ActiveRecord属性

时间:2014-01-15 17:09:59

标签: ruby-on-rails ruby activerecord ruby-on-rails-4

考虑这样的关系:

class BuyableComponent < ActiveRecord::Base
  attr_accessible :cost
end

class CartItem < ActiveRecord::Base
  attr_accessible :quantity

  belongs_to :buyable_component

  def total_cost
    # This should be buyable_component.cost, but how do I make an alias so
    # I can just use 'cost'?
    cost * quantity
  end
end

我有一个buyable_components表和一个cart_items表。与评论描述一样,我希望能够使用cart_item.cost代替cart_item.buyable_component.costalias_attribute似乎接近我的需要,但并不完全。

我正在寻找一种方法来为BuyableComponent的所有属性声明这一点。

1 个答案:

答案 0 :(得分:1)

尝试类似:

class CartItem < ActiveRecord::Base
  delegate :cost, :to => :buyable_component
end

这应该可行,我想