草庐IT

super-friendly-seo-title

全部标签

Ruby - 如何处理子类意外覆盖父类(super class)私有(private)字段的问题?

假设您编写了一个类Sup,我决定将其扩展为SubSup。我不仅需要了解你发布的接口(interface),还需要了解你的私有(private)字段。见证这次失败:classSupdefinitialize@privateField="fromsup"enddefgetXreturn@privateFieldendendclassSub问题是,解决这个问题的正确方法是什么?看起来子类应该能够使用它想要的任何字段而不会弄乱父类(superclass)。编辑:equivalentexampleinJava返回"fromSup",这也是它应该产生的答案。 最佳答案

ruby-on-rails - 从对 super 的调用中清理一个 block

我正在使用ActiveAttr,它为您提供了很好的通过block选项进行初始化:person=Person.new()do|p|p.first_name='test'p.last_name='man'end但是,在包含ActiveAttr::Model的特定类中,我想绕过此功能,因为我想将该block用于其他用途。所以我们开始吧:classImperator::CommandincludeActiveAttr::ModelendclassMyCommand这失败得很惨,因为该block仍然向上传递到链中,并最终在ActiveAttr内部运行此代码:definitialize(*)sup

ruby - 当前的 Ruby 方法是通过 super 调用的吗?

在运行时的方法中,有没有办法知道该方法是否已通过子类中的super调用?例如moduleSuperDetectordefvia_super?#whatgoeshere?endendclassFooincludeSuperDetectordefbarvia_super??'super!':'nothingspecial'endendclassFu"nothingspecial"Fu.new.bar#=>"super!"我如何编写via_super?,或者,如果需要,如何编写via_super?(:bar)? 最佳答案 可能有更好的方法

ruby-on-rails - Rails - 父类(super class)不匹配

玩转Rails和Controller继承。我创建了一个名为AdminController的Controller,其中一个名为admin_user_controller的子类位于/app/controllers/admin/admin_user_controller.rb这是我的routes.rbnamespace:admindoresources:admin_user#Havetheadminmanagethemhere.endapp/controllers/admin/admin_user_controller.rbclassAdminUserController应用程序/Contr

ruby-on-rails - 如何从 ruby​​ 父类(super class)中的方法访问子类中的当前 __FILE__

我希望为日志设置一个默认路径,相对于使用日志的文件路径,像这样:#/path/to/lib/bar.rbclassBardefsettings_file_pathFile.dirname(File.expand_path(__FILE__))endend#/path/to/app/models/foo.rbclassFoo理想输出:#=>/path/to/app/models实际输出:#=>/path/to/lib因为FILE引用了它写入的文件,而不是它被调用的地方,它返回bar.rb文件,但我想要这样的东西返回foo.rb文件的路径,即使该方法是在Bar中定义的。有人有什么建议吗?

ruby-on-rails - 带有选项的 link_to image_tag (rel, title)

在HTML中我会写:但我必须针对ruby​​onrails对其进行调整,而且我对它还很陌生...所以我尝试了:rel="lightbox"title="mycaption">...但它不起作用,因为“rel="lightbox"title="mycaption">”部分未应用但出现在html部分上+我看到了2个图像,而我应该只看到“imagethumb”。我也试过:"lightbox",:title=>"mycaption")%>我也看到了这两张图...我应该怎么做才能获得与我编写的HTML代码等效的内容? 最佳答案 试试这个"")

ruby - 父类(super class)不匹配、结构、重新加载和 Spork

假设有下面这个类#derp.rbclassDerp当我加载“./derp.rb”两次时,程序因TypeError:superclassmismatchforclassDerp而失败。好的,这可以通过require来管理。但是我如何为每次使用Spork的测试运行重新加载这些类?require显然不会工作,因为它会缓存加载的文件。 最佳答案 Struct.new正在为您的每次加载创建新类。irb(main):001:0>classTest1classTest1'您可以将返回的Struct.newclass保存到一个变量中,然后您可以使用

Ruby:是否有关键字可以从自身内部调用方法(类似于 super)?

我想知道:在Ruby中,有没有一种方法可以在不使用其名称的情况下从自身内部调用方法?如果该方法是通过某些元编程技术创建的,那么通过其名称调用它可能会难以阅读。即使对于通常定义的方法,如果您不确定它的好名字,或者如果它的名字很长,通过一些关键字(类似于super)从自身内部调用它可能会很方便。 最佳答案 您可以使用Kernel#__method__以Symbol形式返回当前方法的名称。与super不同,它不是关键字而是常规方法,因此您必须将它连同必需的参数一起传递给send方法才能调用该方法。这是__method__返回的内容:obj

ruby-on-rails - rails friendly_id 并检查条目是否存在

如何检查friendly_id条目在获取之前就存在?例如:defbook@book=Book.find(params[:book_id])end没关系,但我想先检查friendly_id是否存在,例如:defbookifBook.exists?(params[:book_id])@book=Book.find(params[:book_id])else#404notfoundend 最佳答案 对于friendly_idgem的最新版本,您可以说:Book.friendly.exists?params[:book_id]

ruby-on-rails - Friendly_id 不为旧记录创建 slug

我刚刚将Friendly_idgem添加到我的Rails项目中,希望不使用数据库ID并创建一个slug,但我似乎无法为旧记录创建slug。我的模型看起来像这样。classMapping然后我运行Model.find_each(&:save)但它一直吐出nil结果。我试过完全注释掉should_generate_new_friendly_id但没有成功。有人看到我在这里做错了什么吗?编辑我回滚了我的数据库并重写了我的迁移,这似乎已经解决了这个问题。 最佳答案 如果有人发现这个6年前的问题:没有“doandend”block:find_