何时执行模型的类部分中定义的代码

时间:2016-11-13 12:48:10

标签: ruby-on-rails

如果我把它放在我的模型中:

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

本节

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

只会执行一次?何时首次加载模型?或者它会被执行多次?

1 个答案:

答案 0 :(得分:1)

一旦加载模型。在Ruby中,类定义只是代码,因此示例中的enum是方法调用,[:one, :two, :three].map{|e| [e,e]}.to_h是参数。

调用enum的最终结果是,将在类上定义其他几个方法,允许您根据docs执行sample.two?之类的操作。

如果您想知道这是怎么发生的,请阅读source code on Github