草庐IT

private-class

全部标签

ruby - 私有(private)方法调用错误

写了一个方法;当我尝试运行它时,出现错误:NoMethodError:privatemethod‘subtotal’calledfor39.99:Floatattoplevelingrades.rbatline9Programexitedwithcode#1after0.04seconds.代码如下:defsubtotal(qty=1)returnnilifself.to_f 最佳答案 当你在任何类之外声明一个方法时,它是一个私有(private)方法,这意味着它不能被其他对象调用。您应该打开您希望该方法进入的类,然后将方法定义放在

ruby-on-rails - 切换到 Rails 4.1 时出现错误 - `method_missing':ActiveRecord::Base:Class (NoMethodError) 的未定义方法 `whitelist_attributes='

从Rails4.0切换到Rails4.1时出现此错误:activerecord-4.1.8/lib/active_record/dynamic_matchers.rb:26:in`method_missing':undefinedmethod`whitelist_attributes='forActiveRecord::Base:Class(NoMethodError)我没有在我的应用程序的任何地方使用attr_accessible或attr_protected所以我想知道为什么我有问题。当迁移到Rails4.0时,我已经安装了我的application.rb:配置/应用程序.rb:c

ruby-on-rails - "class << self"在 Rails 中是什么意思?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:classCansomeonepleaseexplainclass我想知道class是什么意思声明在模型类中意味着什么?它里面的语句和外面的语句有什么不同。例如:classPost什么是class什么意思?方法search(q)之间有什么区别?和search2(qq)?

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

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

ruby - 将委托(delegate)方法设为私有(private)

我委托(delegate)了几个方法,还希望它们都是私有(private)的。classWalrusdelegate:+,:to=>:bubblesdefbubbles0endend我可以说private:+,但我必须为每个方法都这样做。有没有办法返回委托(delegate)方法列表或让委托(delegate)创建私有(private)方法? 最佳答案 因为delegate返回传入的符号列表,您可以像这样链接方法调用:private*delegate(:foo,:bar,:to=>:baz)

Ruby 单例方法 (class_eval, define_method) vs (instance_eval, define_method)

Ruby中的元编程很棒,因为我经常使用它来模拟基于原型(prototype)的编程,并快速编写一些问题的原型(prototype)解决方案来测试它们的可行性。所以我想知道下面这段代码是否有本质区别:(class和(class代码的两个版本都定义了一个单例方法,我还没有遇到任何迫使我选择(instance_eval,define_method)组合而不是(class_eval,define_method)组合来定义单例方法,我想知道两者之间是否存在一些本质区别。 最佳答案 define_method没有区别。但是当您使用def时会有所

ruby-on-rails - 从父类(super class)调用子类方法

前言:这是在Rails应用程序的上下文中。然而,这个问题是特定于Ruby的。假设我有一个Media对象。classMedia我在几个子类中扩展了它:classImage在Media类中,我想从适当的子类中调用show的实现。因此,对于Media,如果self是一个Video,那么它将调用Video的show方法。如果self是Image,它将调用Image的show方法。我有Java背景,首先想到的是“在父类(superclass)中创建一个抽象方法”。但是,我在多个地方(包括StackOverflow)读到抽象方法并不是在Ruby中处理此问题的最佳方式。考虑到这一点,我开始了rese

ruby - 全新安装 OSX 10.9.1 在尝试安装 gems 时返回 "undefined method ` path2class'"

我刚刚使用Homebrew和RVM安装了一个干净的Mavericks安装。brewdoctor和rvmrequirements都返回“allgood”,但是,当我在我的项目目录中运行bundleinstall时,我的大多数gem安装都很好,但少数安装失败并出现相同的以下错误:Bundler::GemspecError:Couldnotreadgemat/Users/NK/.rvm/gems/ruby-2.0.0-p353/cache/eventmachine-1.0.3.gem.Itmaybecorrupted.Anerroroccurredwhileinstallingeventma

ruby-on-rails - Rails + 延迟作业 : Where is the correct place to store custom job classes?

我是delayed_job的新手,我开始编写自己的“自定义作业”。每个自定义作业基本上只是一个常规的ruby​​类,但我不确定这些自定义作业类通常存储在项目目录结构中的何处。我在考虑lib,但此时lib似乎是一个垃圾抽屉:/(不过也许没关系)谢谢!! 最佳答案 常见的方法是在app文件夹下创建jobs文件夹。但您唯一应该关心的是它们是您的文件,因此请以您觉得最适合自己的方式进行。 关于ruby-on-rails-Rails+延迟作业:Whereisthecorrectplacetosto

ruby - 是否有类似于 Class#inherited 的钩子(Hook),仅在 Ruby 类定义后触发?

#inherited在classFoo语句之后被调用。我想要一些仅在关闭类声明的end语句之后运行的东西。这里有一些代码来举例说明我需要什么:classClassdefinheritedmputs"In#inheritedfor#{m}"endendclassFooputs"InFoo"endputs"Ireallywantedtohave#inheritedtiggeredhere."###Output:#In#inheritedforFoo#InFoo#Ireallywantedtohave#inheritedtiggeredhere.这样的东西存在吗?可以创建吗?我完全不走运吗?