###モデルからモジュールの定数にアクセスしたい
Ruby on RailsでWebアプリケーションを作っています。
includeしたモジュール上で定義された定数にアクセスしようとすると、
NameError: uninitialized constant
とエラーが表示されました。
以前コントローラのconcernsで同じように定数にアクセスするコードを書いていたので同じようなコードを書いていました。モデルでconcernsを利用する時は何か書き方が異なっているのでしょうか。
###ソースコード
# /app/models/folder.rb class Folder < ApplicationRecord belongs_to :team include Query def self.hoge puts Hoge end end
module Query extend ActiveSupport::Concern included do HOGE = "hogehoge" end end
Rails Consoleを起動してクラスメソッドでモジュールの定数にアクセスすると先のエラーが表示されました。
irb(main):001:0> Folder.hoge NameError: uninitialized constant Folder::Hoge from app/models/folder.rb:6:in `hoge' from (irb):1 irb(main):002:0>
###試したこと
・事前にローカルでmoduleとclassを定義して動作を確認しました。
・Railsを置いているサーバーの再起動
・included do endの中に入れて定数を宣言
・インタントメソッドで定数を参照
・タイプミスでないか確認するため他のアプリケーションで書いたコントローラ以下のconcernsにあるモジュールをコピーアンドペーストして再度メソッドを実行。
・Concernの使い方やスコープについて書かれているドキュメントの検索。
以上のことを試してみましたが解決には至りませんでした。
ConcernやModuleの書き方の基本的な理解が不足しているのでしょうか。
###バージョン情報
Railsのバージョン
rails (5.1.2)
unicorn (5.3.0)
rake (12.0.0)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。