我正在尝试将一些模型代码移动到模块中。
原始模型方法:
我正在尝试将一些模型代码移动到模块中。
原始模型方法:
class Book < ActiveRecord::Base
def book_royalty(period='enddate', basis="Net receipts")
#stuff
end
end
所以我添加
include Calculation
并将方法移动到模块:
module Calculation
def book_royalty(period='enddate', basis="Net receipts")
#stuff
end
end
但现在我得到
参数数量错误(2 代表 0)
如果我将 book.rb 模型中的方法设为类方法(即,如果我将方法名称设为方法名称),这也是我得到的错误self.book_royalty(args)
。
我是否无意中将方法移至模块类方法?我include
在 book.rb 中使用,而不是extend
. 如何让父模型成功包含模块的方法?
编辑
book_royalty
在版税声明模型中被调用。
书.rb:
attr_accessor :book_royalty
版税声明.rb:
def initialize_arrays
@royalty = []
...
end
def sum_at_book_level(contract)
contract.books.where(:exclude_from_royalty_calc => false).each do |book|
book.book_royalty("enddate", basis)
@royalty.push(book.book_royalty("enddate", basis))
# etc
end