有两个类(Order
,Cart
),它们具有相同的依赖另一个类(LineItem
)与has_many
关联。
我可以抓取items = @order.line_items
之类的记录,我想在该集合上添加一个方法,以便能够在items.total_price
和Cart
上计算Order
我知道像@order.line_items.to_a.sum(&:method)
这样的东西,但它有点复杂。
现在我在两个班级都有相同的方法,我想干它。有可能吗?
答案 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