0
的类部分定义的代码。如果我把这个在我的模型:当执行模型
class Sample < ApplicationRecord
enum level: [:one, :two, :three].map{|e| [e,e]}.to_h
本节
[:one, :two, :three].map{|e| [e,e]}.to_h
将只执行一次?当模型第一次加载?或者它会被执行多次?
的类部分定义的代码。如果我把这个在我的模型:当执行模型
class Sample < ApplicationRecord
enum level: [:one, :two, :three].map{|e| [e,e]}.to_h
本节
[:one, :two, :three].map{|e| [e,e]}.to_h
将只执行一次?当模型第一次加载?或者它会被执行多次?
一次,当模型加载。在Ruby中,类定义只是代码,因此在您的示例中,enum
是一个方法调用,而[:one, :two, :three].map{|e| [e,e]}.to_h
是一个参数。
调用enum
的最终结果是将在该类上定义几个其他方法,允许您根据docs执行诸如sample.two?
之类的操作。
如果您想知道这是怎么发生的,请阅读source code on Github。