我是ROR的新手,并尝试将我的PhP应用程序转换为ROR应用程序。有一个php文件common.php,它几乎包含在所有其他文件中。同样,common.php反过来使用RPCClient.php和User.php。变量和方法在php文件中共享。那么,我应该在ROR类或模块中使用什么,因为数据在各种文件之间共享。
答案 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以了解如何正确构建事物。