2017-10-15 125 views
0

我创建了一个关注添加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 

回答

1

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

0

这些都不是问题。所发生的只是连接在需要之前没有实例化。

尝试

Order.connection 

Order.count 

你的愿望计数订单。

相关问题