php - 在 ROR 中使用什么 : Class or Module,

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

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

最佳答案

在 Ruby 中,您需要将事物组织到 namespace 中,而实现此目的的最佳方法是通过类和模块声明。

通常,是您将创建其实例的东西,模块是“混合”的东西(例如,由其他模块或类导入的一组方法),或直接使用。

例如:

class User < ActiveRecord::Base
end

这里Users是一个类,因为您创建用户,并且每个用户都由一个对象表示。

您还可以将方法声明为“mixins”或可包含的模块:

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

您可以直接调用该方法,而无需包含它。这也是一种相当常见的模式,它只是一个组织 namespace 。

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

关于php - 在 ROR 中使用什么 : Class or Module,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50258413/

相关文章:

ruby - 我们如何在 Jekyll 配置文件中使用环境变量?

ruby-on-rails-3 - 导轨 : getting the 'new' path for a nested resource

ruby-on-rails-3 - First_or_create 还错误 : duplicate key value violates unique constraint

javascript - 使用 Rails 3.1 Assets 管道包括外部库

php - 为什么提交后附加行的数据没有显示?

php - 动态 Laravel 社会名流配置

ruby - Sequel::Model:像create_table这样的方法从哪里来?

ios - 离线反向地理编码 iOS

php - 检查字符串是否同时包含空格或特殊字符

php - 如何在 Markdown 通知中插入换行符