Ruby on rails 我如何创建作为。。。而且。。。对于Rails中的模型?就像Java中的接口一样

Ruby on rails 我如何创建作为。。。而且。。。对于Rails中的模型?就像Java中的接口一样,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,Rails通常有一些特殊的关键字,您可以将其插入到模型中,从而为其提供特殊功能。一些例子是或。我该怎么做那种巫术?我想为RefineryCMS引擎/扩展创建一个特殊的订阅选项,并为模型提供订阅功能。我还不知道如何实现这种Rails魔法,也没有看到相关的Rails指南。这些实际上是“Class”类上的实例方法。在Ruby中,当您在类定义块中时,self成为该类。因为括号在方法调用中是可选的,所以可以使它们看起来很像关键字声明。所以你可以 class Class def subscribable

Rails通常有一些特殊的关键字,您可以将其插入到模型中,从而为其提供特殊功能。一些例子是或。我该怎么做那种巫术?我想为RefineryCMS引擎/扩展创建一个特殊的订阅选项,并为模型提供订阅功能。我还不知道如何实现这种Rails魔法,也没有看到相关的Rails指南。

这些实际上是“Class”类上的实例方法。在Ruby中,当您在类定义块中时,
self
成为该类。因为括号在方法调用中是可选的,所以可以使它们看起来很像关键字声明。所以你可以

class Class
  def subscribable
    define_method :subscribe do
    ...
    end
  end
end

class Thing
 subscribable
end

Thing.new.subscribe

看看@bjhaid有趣。有关于这个的教程吗?我对include和extend之间的区别有点模糊。有时候铁轨可能有点干,而且不是很好。有时候他们甚至一次都不重复重要的信息。啊,太好了<代码>定义方法似乎很关键。加载的订单类如何?在加载目标模型之前,您是否需要某种配置来确保您的gem/模块将这些特性添加到类中?Rails中的加载顺序可能会有问题。通常情况下,如果您使用的是Gemfile和bundler,则gems将在项目文件之前自动生成。否则,您可以将代码放入Rails目录中的初始值设定项文件中。