【发布时间】:2014-01-09 23:41:58
【问题描述】:
Rails 大量使用自动生成各种方法和变量。在我自己的私人笔记中,我将它们称为dynamic methods,但是这些东西的正式名称是什么?
这些dynamic methods的一些例子:
创建这样的关系:
class Carriage < ActiveRecord::Base
# attrs: id, wheels, spare
has_one :horse
end
class Horse < ActiveRecord::Base
# attrs: id, carriage_id, name
belongs_to :carriage
end
表示您可以这样做:
> Carriage.create(wheels: 2).create_horse(name: "Fledge")
在该示例中,create_horse 将是 dynamic method
另一个例子:
如果我要创建一个模型方法来将轮子添加到Carriage:
class Carriage < ActiveRecord::Base
self.wheels = wheels + 1 if spare == true
end
我可以访问实例的属性,每个属性都在其自己的 dynamic 变量中:wheels 和 spare。 id 也适用于该方法。我称这些为dynamic 变量,但它们的正式名称是什么?
【问题讨论】:
-
如果有官方名称,我希望在docs 中找到它们,但我没有看到它们在那里调用任何东西,除了方法
-
就我个人而言,我将它们称为“魔术方法”,因为 Rails 为您创建它们“就像魔术一样”,但那……可能不是标准的,比方说。