2016-11-13 9 views
0

のクラスセクションで定義されたコードが実行されている場合:このセクション私は私のモデルでこれを入れた場合のモデル

class Sample < ApplicationRecord 
    enum level: [:one, :two, :three].map{|e| [e,e]}.to_h 

[:one, :two, :three].map{|e| [e,e]}.to_h 

は一度だけ実行されますか?モデルが最初にロードされたとき?または複数回実行されますか?

答えて

1

モデルがロードされると、一度。 Rubyでは、クラス定義は単なるコードなので、例のenumはメソッド呼び出しで、[:one, :two, :three].map{|e| [e,e]}.to_hは引数です。

enumを呼び出すの最終結果は、いくつかの他の方法は、あなたがdocsごとにsample.two?のようなことを行うことができ、クラスで定義されるということです。

これがどのように起こるか知りたい場合は、source code on Githubをお読みください。

関連する問題