【发布时间】:2021-07-02 18:57:03
【问题描述】:
红宝石 2.6.3 ;导轨 6.0.3
我有一个模块和一个包含它的类,但我不能在该类上提供任何类方法,只有实例方法
module Importable
def self.inlcuded(base)
base.extend ClassMethods
base.class_eval do
scope :from_source_a, -> { where(import_source: "source_a") }
end
end
def from_source_a?
self.import_source == "source_a"
end
module ClassMethods
def find_from_source_a(id)
self.find_by(
import_source: "source_a",
import_id: id
)
end
end
end
class Employee < ApplicationRecord
include Importable
end
所以
Employee.first.from_source_a? 有效
但
Employee.find_from_source_a(id) 抛出 NoMethodError: undefined method find_from_source_a for Employee
但是我正在查看的示例使它看起来应该可以工作。关于我在这里出错的任何想法?
【问题讨论】:
-
如果你使用 Rails,为什么不使用
ActiveSupport::Concern
标签: ruby-on-rails ruby module