使用方法:ROR中的类或模块

时间:2018-05-09 16:49:20

标签: php ruby ruby-on-rails-3 ruby-on-rails-4

我是ROR的新手,并尝试将我的PhP应用程序转换为ROR应用程序。有一个php文件common.php,它几乎包含在所有其他文件中。同样,common.php反过来使用RPCClient.php和User.php。变量和方法在php文件中共享。那么,我应该在ROR类或模块中使用什么,因为数据在各种文件之间共享。

1 个答案:

答案 0 :(得分:4)

在Ruby中,您希望将事物组织到命名空间中,最好的方法是通过类和模块声明。

通常情况下,class 的一个实例,module是"混合在& #34; (例如,由其他模块或类导入的一组方法),或直接使用。

例如:

class User < ActiveRecord::Base
end

此处Users是一个类,因为您创建用户,每个用户都由一个对象表示。

您还可以将方法声明为&#34; mixins&#34;或包含模块:

module UserPermissions
  def can_delete_post?(post)
    post.user_id == self.id
  end
end

class User < ActiveRecord::Base
  include UserPermissions
end

现在user.can_delete_post?是一个有效的方法,该方法在给定用户实例的上下文中执行。

您还可以制作只能直接调用的方法集合的模块:

module AppConfig
  def self.account_limit
    1
  end
end

AppConfig.account_limit
# => 1

您可以直接调用该方法而无需include。这是一个相当普遍的模式,它只是一个组织命名空间。

与许多面向对象的语言一样,尤其是Smalltalk - 派生的语言,您需要阅读object oriented design patterns以了解如何正确构建事物。