【问题标题】:Rails 5 enum inside model's Concerns generates NameError: uninitialized constant模型关注中的 Rails 5 枚举生成 NameError: uninitialized constant
【发布时间】:2016-12-26 14:31:10
【问题描述】:

Rails 5 在这里。

我尝试在我的用户模型(设计模型)中加载一个关注点,但没有成功。 include Levelable 在其他型号上工作没有任何问题。 我是否必须针对此特殊模型配置特殊的配置/帮助程序/初始化程序才能使其工作?

模型关注 Levelable 被模型 User 和 Client 使用

#models/concerns/levelable.rb 
require 'active_support/concern'

module Levelable
  extend ActiveSupport::Concern

  included do
    enum level: { beginner: 0, intermediate: 1, advanced: 2, very_advanced: 3 }
  end
end

以及模型(为便于阅读而缩短)

#models/user.rb
class User < ApplicationRecord

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable

  include Levelable

  acts_as_messageable
end

此设置结果为:NameError: uninitialized constant User::Levelable 客户端模型上发生了同样的错误,所以我猜有些东西不适用于我的关注负载。 我已经尝试过自动加载config/application.rb 中的路径而不做任何更改。

我不知道如何使关注的负载起作用,任何帮助都会很棒。谢谢!

【问题讨论】:

    标签: ruby-on-rails devise include ruby-on-rails-5 activesupport-concern


    【解决方案1】:

    我前段时间遇到过这个问题,经过一番挖掘后,我发现我的关注文件使用大写形式命名(出于某种疯狂的原因)。

    所以我将它们从Searchable.rb 重命名为searchable.rb,一切都完成了! :)

    PS。如果您使用 git/github,则差异不区分大小写,因此如果您将它们从 Levelable.rb 重命名为 levelable.rb,它将不会出现在 git status 中。

    干杯

    【讨论】:

    • 显然就是这样。谢谢你的提示!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多