railsまたはrailsのengineでmodelをモジュール化しconstantizeで使用

648 ワード

rails engineはdioneと名付けられた
modelsディレクトリ構造は次のとおりです.
models/yancheng1/yancheng2/yancheng.rb
yancheng.rbクラスファイルの内容は以下の通りです.
model Dione
class Yancheng1::Yancheng2::Yancheng
def yan1
......
end
def yan2
......
end
end
end

文字列実体化オブジェクト
@demo="Dione::Yancheng1::Yancheng2::Yancheng".constantize
#new    ,      
@demo.new.yan2

注意:手動で作成したyancheng 1とyancheng 2の場合、これらのディレクトリの名前は小文字でなければなりません.Erにmoudel engineの名前を書いてclass Yancheng 1::Yancheng 2::Yancheng
イニシャルは大文字でなければなりません.そうしないと、constantizeメソッドを呼び出すときにエラーが発生します.
engineで定義するのではなくrailsプロジェクトでcontatizeメソッドのdemoで直接定義すればよい