草庐IT

private-class

全部标签

ruby-on-rails - 无法将自定义字段添加到 Ruby on Rails 中的 Devise 模型。私有(private)方法错误

使用Devisegem生成的用户模型。尝试添加“用户名”属性。按照官方文档,现在我的ApplicationController是这样的:classApplicationController当我尝试转到帐户更新页面时,出现以下错误:NoMethodErrorinDevise::RegistrationsController#editprivatemethod`permit'calledfor#Devise::ParameterSanitizer:0x007f13396cf180>这里有什么问题吗? 最佳答案 根据thisanswer,

ruby - 如何检查是否在ruby中定义了私有(private)方法

我能找到的最接近的是InRuby,howdoIcheckifmethod"foo=()"isdefined?,但它仅在方法是公共(public)的时才有效,即使在类block内也是如此。我想要的:classFooprivatedefbar"bar"endmagic_private_method_defined_test_method:bar#=>trueend我尝试过的:classFooprivatedefbar"bar"endrespond_to?:bar#=>false#thisactuallycallsrespond_toontheclass,andsorespond_to:su

ruby-on-rails - ruby /rails : Reopening vs Overwriting a Class

我想向Rails模型添加一个方法,用于测试。如果我这样做classModeldefsomething_newdo_somethingendend在Rails控制台或在运行时加载的文件中,模型被覆盖而不是被修改。如果我在上面的行之前放置类似v=Model.class的内容,新方法将成功添加到现有类中。显然需要引用来表示现有类(class)正在重新开放。另一方面,可以向Fixnum添加一个方法,而无需首先引用它。这是怎么回事,确保现有类被重新打开和修改而不是被覆盖的通常方法是什么?谢谢。 最佳答案 听起来你在使用它之前不需要这个类。当您

ruby - ruby 中 `nil` 私有(private)方法的目的是什么?

使用ruby​​2.3,pry开REPL,我得到了一个我无法理解的有趣结果:nil.private_methods#[:DelegateClass,:Digest,:sprintf,:format,:Integer,:Float,:String,:Array,:Hash,:throw,:iterator?,:block_given?,:catch,:loop,:Rational,:trace_var,:untrace_var,:Complex,:at_exit,:gem_original_require,:URI,:set_trace_func,:select,:caller,:cal

ruby - 是否可以让 class.property = x 返回 x 以外的东西?

假设我有一个Ruby类:classMyClassdefself.propertyreturn"someVal"enddefself.property=(newVal)#dosomethingtoset"property"success=truereturnsuccess#successisabooleanendend如果我尝试执行MyClass.property=x,整个语句的返回值始终是x。许多基于C/受启发的语言都习惯于返回bool“成功”值-是否可以使用Ruby中的“等于语法”为setter执行此操作?此外-如果这不可能,为什么不呢?允许“equalssetter”操作返回一个值

ruby-on-rails - rails : How to test if an attribute of a class object is required in the model policy?

简单地说,我有一个模型用户,其中包含名称、电子邮件和评论作为属性。validates_presence_of:namevalidates_presence_of:email所以“姓名”和“电子邮件”是必需的,但不是“评论”。my_user=User.new我想找到一种方法来测试像my_user.name.required?或User.name.required?类似的东西。我的目标是创建一个表单,并根据该项目是否设置为“validates_presence_of”,将特定类动态添加到表单项目span或td我试图搜索它,但没有找到任何相关信息。有没有简单的方法可以做到这一点?谢谢

ruby - ruby 对象模型的良好解释——主要是 'classes are objects'?

正在研究ruby对象模型,有一些疑问。我理解对象只存储实例变量,方法存储在对象引用的类中的想法。我也理解“self”的概念——它是什么,它如何变化等等。但是,我不明白“类是对象”这一概念。哪里有好的、直观的解释吗?(顺便说一句:我正在使用RubyObjectModelandMetaprogramming和MetaprogrammingRuby作为我的两个资源。如果有人可以提出其他建议,那将会很有帮助。)谢谢。 最佳答案 顾名思义,类就是对象。具体来说,它们是Class类的实例,它本身是Module类的子类,而后者又是Object的子

ruby - Rubocop 错误 'Class definition is too long ruby'

我收到rubocop错误“类定义太长。[236/100]'。我的类(class)如下所示:classSomeClassNameincludeHelperModuleattr_accessor:aaa,:bbb,:ccc....methods.....end可能会出现什么问题?rubocop文档ClassLength说“一个类(class)的长度超过了某个最大值”。什么意思? 最佳答案 是的,这是因为rubucop认为整体线路太多。我同意类(class)不应该太长,但认为最终应该由以下因素决定:类(class)是否有单一职责,方法是否

ruby - 如何将方法动态定义为私有(private)?

这似乎不起作用:classTestprivatedefine_method:private_methoddo"uh!"endendputsTest.new.private_method 最佳答案 Test.instance_eval{private:private_method}或者,直接运行private:private_method来自Test类。 关于ruby-如何将方法动态定义为私有(private)?,我们在StackOverflow上找到一个类似的问题:

ruby - alias_method 和 class_methods 不混合?

我一直在尝试修补全局缓存模块,但我不明白为什么它不起作用。有人有什么建议吗?这是错误:NameError:undefinedmethod`get'formodule`Cache'from(irb):21:in`alias_method'...由此代码生成:moduleCachedefself.getputs"original"endendmoduleCachedefself.get_modifiedputs"Newget"endenddefpeek_a_booCache.module_evaldo#make:get_not_modifiedalias_method:get_not_mo