2016-11-13 54 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