草庐IT

time模块

全部标签

Ruby 模块和扩展 self

代码在什么情况下:moduleMextendselfdefgreetputs"hello"endend使用比说这样的话更有益:moduleMdefself.greetputs"hello"endend在顶部,一个是被扩展的实例方法,而后者只是一个类方法,但是无论调用哪个方法,你都必须M.greet,对吧?我只是好奇是否有人可以阐明何时使用一个代码而不是另一个代码。谢谢! 最佳答案 第一个示例通常是人们实现module_function功能的一种方式(当他们不知道此方法的存在时)。module_function既是实例方法又是类方法。

ruby - 在 Ruby 中从 X.times 返回数组的简洁方法

我经常想对数组执行某项操作X次,然后返回该数字以外的结果。我通常写的代码如下:defother_participantsoutput=[]NUMBER_COMPARED.timesdooutput有没有更简洁的方法来做到这一点? 最佳答案 听起来您可以使用map/collect(它们是Enumerable的同义词)。它返回一个数组,其内容是通过map/collect每次迭代的返回值。defother_participantsNUMBER_COMPARED.times.collectdoParticipant.new(all_frie

ruby-on-rails - 如何在 Rails 之外使用 Rails DateHelper 方法 time_ago_in_words?

因此,我下载并安装了ActiveHelpergem,但我仍然无法弄清楚如何在普通Ruby代码中使用ActionView的DateHelper方法,例如time_ago_in_words。这不包括在ActiveHelper中吗?是否可以在Rails之外使用这些方法?http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-time_ago_in_words 最佳答案 试试这个:require'action_view'require'ac

ruby-on-rails - rails : Ensure only one boolean field is set to true at a time

我有一个Logo模型,它的字段名称为:字符串,默认为bool值。我希望true值是唯一的,以便一次只能将数据库中的一项设置为true。如何在我的Controller中设置更新和新操作以将Logo的所有其余值设置为false?假设我有以下设置在我的数据库中模特标志名称:字符串|默认值:bool值|项目1|是的|项目2|假|第3项|假|如果我将Item2默认值更改为true,我希望它遍历所有Logo并将其余Logo设置为false,因此一次只有一个为true,所以它看起来像这样。名称:字符串|默认值:bool值|项目1|假|项目2|是的|第3项|假|提前感谢您的帮助。

ruby - 为什么模块的 'self'方法不能成为类的单例方法?

moduleTestdefself.model_methodputs"thisisamodulemethod"endendclassAincludeTestendA.model_method这将是错误的:undefinedmethod`model_method'forA:Class(NoMethodError)但是当我使用A的元类时,它起作用了:moduleTestdefmodel_methodputs"thisisamodulemethod"endendclassAclass谁能解释一下? 最佳答案 如果你想在包含模块时将类方法和

ruby - 从模块中获取类名

如何从模块中获取包含该模块的类的类名?moduleActMethodsdefsome_method(*attr_names)cls=self.class#thisdoesn'tworkendend我如何进入cls变量,这个模块要加载的类的名称? 最佳答案 self.class确实为您提供了调用该方法的对象的类。假设模块被包含在一个类中,这要么是包含该模块的类,要么是它的子类。如果您真的只想要名称,可以改用self.class.name。如果你用模块扩展了一个类并且你想得到那个类,你可以只做cls=self(或者cls=name如果你

ruby - 获取包含模块的类列表

我有一个mixin,我想为它获取包含它的所有类的列表。在mixin模块中,我执行了以下操作:moduleMyModuledefself.included(base)@classes||=[]@classes这很好用:>MyModule.classes#=>nil>MyClass.new#=>#>MyModule.classes#=>["MyClass"]现在,我想将这部分提取到一个单独的模块中,该模块可以包含在我的其他mixins中。所以,我想出了以下办法:moduleListIncludedClassesdefself.included(base)p"...adding#{base.

ruby - Ruby 模块中的私有(private)类(不是类方法)?

我是Ruby新手(熟悉Python、C++和C)。我需要创建一个仅供模块中的其他类和方法使用的类。在Python中,我将其称为__classname。我会在C++中使用一个空的typedef。我如何在Ruby中执行此操作(或者我是不是找错了树而不是以“Ruby方式”执行此操作?) 最佳答案 要认识到的最重要的事情是类没有什么特别的。它只是一个对象。按照惯例,类被分配给常量,但没有任何内容表明它们必须是。因为类和任何其他对象一样只是对象,所以将它们设为私有(private)的方式与将任何其他对象设为私有(private)的方式相同。以

Ruby:获取扩展模块列表?

当您在类或其他模块中包含模块时,您可以调用@mymod.included_modules获取包含的模块列表。是否有用于列出扩展模块的等价物?moduleFeature1endmoduleFeature2extendFeature1endFeature2.extended_modules#=>[Feature1] 最佳答案 Feature2.singleton_class.included_modules#=>[Feature1,...] 关于Ruby:获取扩展模块列表?,我们在Stack

ruby - ApplicationController 的副本已从模块树中删除,但仍处于事件状态

每当两个并发的HTTP请求进入我的Rails应用时,第二个总是返回以下错误:AcopyofApplicationControllerhasbeenremovedfromthemoduletreebutisstillactive!从那里它给出了一个无用的堆栈跟踪,结果是“我们通过了标准服务器的东西,在ApplicationController上运行了你的第一个before_filter(我检查过;它只是先运行的过滤器)”,然后提供以下内容:/home/matchu/rails/torch/vendor/rails/activesupport/lib/active_support/depe