为什么我关注的方法 运行 不会来自控制台?

Why won't my concern's methods run from the console?

我创建了一个添加 enumclass_methods

的问题
# app/models/concerns/addressable.rb
module Addressable
  extend ActiveSupport::Concern

  included do
    enum address_province: {
      Queen: 'Q',
      Bear:  'B'
    }
  end

  class_methods do
    def options_for_cities
      %w[a b]
    end

    def scream
      'aaaaaaaaaaaaaaaaaa'
    end
  end
end

# app/models/order.rb
class Order < ApplicationRecord
  include Addressable
end

但是,当我尝试在 Order 中执行这些方法中的任何一个时,它们都不起作用。

Running via Spring preloader in process 3004
Loading development environment (Rails 5.1.2)

irb(main):001:0> Order.options_for_cities
NoMethodError: undefined method `options_for_cities' for Order (call 'Order.connection' to establish a connection):Class
Did you mean?  options_for_with_status
    from (irb):1
irb(main):002:0> Order.scream
NoMethodError: undefined method `scream' for Order (call 'Order.connection' to establish a connection):Class
    from (irb):2
irb(main):003:0> Order.address_provinces
NoMethodError: undefined method `address_provinces' for Order (call 'Order.connection' to establish a connection):Class
    from (irb):3

您似乎与现有的 Addressable 模块有冲突。尝试将您的模块名称更改为不同的名称。

这些都不是问题。所发生的一切是连接在需要时才实例化。

尝试

Order.connection

Order.count

您获得订单的欲望计数。