Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何创建可在rails应用程序中的任何位置使用的自定义方法_Ruby On Rails_Ruby_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 如何创建可在rails应用程序中的任何位置使用的自定义方法

Ruby on rails 如何创建可在rails应用程序中的任何位置使用的自定义方法,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我希望创建一个自定义方法(例如def plus_two(x)x+2 end,并使其在应用程序中的任何地方都可以访问-即,在控制器、模型、控制台、视图、测试和任何其他.rb文件中都可以访问。我目前在应用程序的许多区域定义了相同的方法,并希望使其干燥 如何做到这一点 注意:我不介意调用该方法是否需要预先添加某些内容(我已经看到一些答案,其中方法的前面添加了:或名称空间,但在其他情况下,我更倾向于尽可能保持代码简洁 我已经阅读了一些类似的问题(例如一个),但我不太明白阅读评论似乎您只是在寻找一个清晰简

我希望创建一个自定义方法(例如
def plus_two(x)x+2 end
,并使其在应用程序中的任何地方都可以访问-即,在控制器、模型、控制台、视图、测试和任何其他
.rb
文件中都可以访问。我目前在应用程序的许多区域定义了相同的方法,并希望使其干燥

如何做到这一点

注意:我不介意调用该方法是否需要预先添加某些内容(我已经看到一些答案,其中方法的前面添加了
或名称空间,但在其他情况下,我更倾向于尽可能保持代码简洁


我已经阅读了一些类似的问题(例如一个),但我不太明白

阅读评论似乎您只是在寻找一个清晰简单的方法示例,该方法在您的应用程序中随处可见:

# in app/models/calculator.rb
module Calculator
  def self.plus_two(x) 
    x + 2 
  end
end
可以这样称呼:

Calculator.plus_two(8)
#=> 10

在阅读评论时,您似乎只是在寻找一个在您的应用程序中随处可见的清晰简单的方法示例:

# in app/models/calculator.rb
module Calculator
  def self.plus_two(x) 
    x + 2 
  end
end
可以这样称呼:

Calculator.plus_two(8)
#=> 10

我想找一个控制器的助手或者一个模型的关注点。如果你仍然需要应用程序的所有方面,你可以做一个单身。编辑:我不是那个反对投票的人。也许这篇文章可以帮助你实现这一点,感谢你的提示。有没有可能列出步骤,即我需要制作的每个文件,每个文件中要放什么,以及要运行的任何命令?我问在一个论坛和90条消息中,我仍然无法确定一种方法来做我想做的事情。我知道存根、固定装置、服务、实例与类方法的存在,以及其他一些事情,但仍然没有清晰完整的说明。我不知道Rails,但考虑到
Object.祖先#=>[Object,Kernel,BasicObject]
您可以将其添加到
内核
模块中。如果您不介意“名称空间”(这在我看来更可取),那么像
模块Thing;def self.plus_-two(x);x+2;end;end
这样简单的东西就可以工作了,您只需将其称为
Thing.plus-two(4)#=>6
我会找一个控制器的助手或者一个模型的关注点。如果你仍然需要应用程序的所有方面,你可以做一个单身。编辑:我不是投反对票的人。也许这篇文章可以帮你实现这一点,谢谢你的提示。是否可以列出步骤,即我需要制作的每个文件,每个文件中要放什么,以及要执行的任何命令运行?我在一个论坛上问了与上面相同的问题,90条消息之后,我仍然无法确定一种方法来做我想做的事情。我了解到存根、固定装置、服务、实例与类方法以及其他一些东西的存在,但仍然没有清晰完整的说明。我不知道Rails,但考虑到
Object.ancestors#=>[Object,Kernel,BasicObject]
您可以将其添加到
内核
模块中。如果您不介意“名称空间”(这在我看来更可取),那么像
模块Thing;def self.plus_two(x);x+2;end;end
这样简单的东西就行了,您只需将其称为
Thing.plus_two(4)#=>6
能够做到这一点对我来说是一个重大突破(我已经阅读了90多篇论坛帖子和大约20多个问题,但在提问之前没有做到)。接下来的一个问题,不是我想要定义的1种方法,比如我有10种方法,我会把它们都放在单独的文件中吗(例如,
calculator.rb
abacus.rb
等)或者我可以在一个文件中放入多个方法吗?最佳做法是什么?@user5783745是的!您可以在同一个模块中放入多个方法,也可以生成更多的模块。您了解类和模块之间的区别吗?在某些情况下,您可能会发现您希望使用类而不是模块。此外,您可能希望查看into ActiveSupport关注点,这是Rails“融入”的方式将功能放入类中。如果您有要包含在多个模型中的功能,则它们非常方便。@user5783745:可以向这样的模块添加更多方法,并且您可以有多个模块。在这种方法中,我将使用不同的模块对方法进行分组,以便对它们进行组织。一个文件中的方法太多很难阅读也很难理解。您可能希望按照方法的用途或处理的数据类型来组织方法。但这样的结构完全取决于我们的应用程序和您的域。能够做到这一点对我来说是一个重大突破(我已经阅读了90多篇论坛帖子和大约20多个问题,但在提问之前无法回答)。接下来的一个问题不是1个方法,而是我想定义10个方法,我是否会将它们全部放在单独的文件中(例如,
calculator.rb
abacus.rb
等)或者我可以在一个文件中放入多个方法吗?最佳做法是什么?@user5783745是的!您可以在同一个模块中放入多个方法,也可以生成更多的模块。您了解类和模块之间的区别吗?在某些情况下,您可能会发现您希望使用类而不是模块。此外,您可能希望查看into ActiveSupport关注点,这是Rails“融入”的方式将功能放入类中。如果您有要包含在多个模型中的功能,则它们非常方便。@user5783745:可以向这样的模块添加更多方法,并且您可以有多个模块。在这种方法中,我将使用不同的模块对方法进行分组,以便对它们进行组织。一个文件中的方法太多很难阅读和理解。您可能希望根据方法的用途或处理的数据类型来组织方法。但这种结构完全取决于我们的应用程序和您的域。