RoR - 向依赖集合添加方法

时间:2015-01-28 13:31:28

标签: ruby-on-rails activerecord dependencies

有两个类(OrderCart),它们具有相同的依赖另一个类(LineItem)与has_many关联。

我可以抓取items = @order.line_items之类的记录,我想在该集合上添加一个方法,以便能够在items.total_priceCart上计算Order

我知道像@order.line_items.to_a.sum(&:method)这样的东西,但它有点复杂。

现在我在两个班级都有相同的方法,我想干它。有可能吗?

1 个答案:

答案 0 :(得分:1)

您的解决方案Module将实现该行为。

app/models/concerns文件夹中创建名为priceable.rb

的文件

并将此代码放入

require 'active_support/concern'

module Priceable
  extend ActiveSupport::Concern

  included do
    has_many :line_items
  end
  # instance methods on object that includes this module
  def total_price
    #logic
  end

  # class methods for class that will include module
  module ClassMethods

    # define class methods
  end
end

model order插入下一行代码和cart模型

class Order < ActiveRecord::Base    
    include Priceable
    # remove from here has_many :line_items
    # it has been moved to the module
    ...
end