草庐IT

CURRENT_AS_SELF

全部标签

ruby-on-rails - Ruby 中 as_json 和 to_json 方法的区别

as_json和to_json这两个方法有什么区别。它们相同吗?如果不是,它们之间有什么区别? 最佳答案 to_json返回字符串。as_json返回带有String键的Hash。>{:name=>"KonataIzumi",'age'=>16,1=>2}.to_json"{\"name\":\"KonataIzumi\",\"age\":16,\"1\":2}">{:name=>"KonataIzumi",'age'=>16,1=>2}.as_json{"name"=>"KonataIzumi","age"=>16,"1"=>2}

ruby - "self-documenting"代码如何才能不烦人?

关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.3年前关闭。Improvethisquestion我不确定这里的最佳实践是什么,但我经常看到缩写的变量名,尤其是当范围很小的时候。所以(使用简单的Ruby示例)而不是defadd_location(name,coordinates),我看到类似defadd_loc(name,coord)的东西——我什至可能会看到类似defadd_loc(n,x,y)的东西.我想当人们习惯于看到缩写时,更长的名字可能会让他们感到疲倦。冗长是否有助于可读

ruby - 何时在 Ruby 方法中使用 `self.foo` 而不是 `foo`

这不是Rails特有的——我只是以Rails为例。我在Rails中有一个模型:classItem(假设Item模型(类)有一个名为name的方法。)我什么时候需要使用self.name我什么时候可以只使用name(例如,#{name})? 最佳答案 在调用方法时更喜欢省略self.是惯用的;通常不需要。调用setter方法时,您必须使用self.foo=xxx,而不是foo=xxx,以便Ruby意识到您没有尝试创建新的局部变量。同样,如果您有一个与方法同名的现有局部变量do_something,这不太可能发生,您必须使用self.d

ruby - "extend self"与 "module_function"相同吗?

extendself和module_function是实现它的两种ruby​​方法,因此您可以在模块上调用方法,如果包含该模块也可以调用它。这些方式的最终结果有什么不同吗? 最佳答案 module_function将给定的实例方法设为私有(private),然后复制并将它们作为公共(public)方法放入模块的元类中。extendself将所有实例方法添加到模块的单例中,保持它们的可见性不变。moduleMextendselfdefa;endprivatedefb;endendmoduleNdefc;endprivatedefd;e

ruby - 为什么在 ruby​​/rails/activerecord 中并不总是需要 self?

在Rails模型中测试getter/setter对时,我发现了一个很好的行为示例,我一直认为这种行为很奇怪且不一致。在这个例子中,我处理的是classFolder.Folderbelongs_to:parent,:class_name=>'Folder'在getter方法上,如果我使用:defparent_nameparent.nameend……或者……defparent_nameself.parent.nameend...结果完全一样,我得到了父文件夹的名称。但是,在getter方法中,如果我使用...defparent_name=(name)parent=self.class.fi

ruby-on-rails - 带 ruby​​ 调试器的 Rails 抛出 'Symbol not found: _ruby_current_thread (LoadError)'

我有标准的ruby​​-head和Rails3.1rc4。我按照http://dirk.net/2010/04/17/ruby-debug-with-ruby-19x-and-rails-3-on-rvm/中的说明安装了ruby​​-debug。但是当我运行railss--debugger时它会抛出这个奇怪的错误/Users/schovi/.rvm/gems/ruby-head/gems/activesupport-3.1.0.rc4/lib/active_support/dependencies.rb:237:in`require':dlopen(/Users/schovi/.rvm

ruby - `def self.function` 名称是什么意思?

谁能给我解释一下在方法定义中添加self是什么意思?是不是类似于java中的this关键字? 最佳答案 与其他语言不同,Ruby没有类方法,但它有附加到特定对象的单例方法。cat=String.new("cat")defcat.speak'miaow'endcat.speak#=>"miaow"cat.singleton_methods#=>["speak"]defcat.speak创建附加到对象cat的单例方法。当你写classA时,它等同于A=Class.new:A=Class.newdefA.speak"I'mclassA"e

ruby-on-rails - rails ActiveRecord : Find All Users Except Current User

我觉得这应该很简单,但是我的脑子短路了。如果我有一个代表当前用户的对象,并且想查询除当前用户之外的所有用户,考虑到当前用户有时可能为nil,我该怎么做?这就是我现在正在做的:defindex@users=User.all@users.deletecurrent_userend我不喜欢的是我正在对查询结果进行后处理。除了感觉有点不对之外,如果我将查询转换为使用will_paginate运行,我认为这不会很好地工作。关于如何通过查询执行此操作的任何建议?谢谢。 最佳答案 可以在Rails4及更高版本中执行以下操作:User.where.

ruby-on-rails - :as in rails routes. rb

在config/routes.rb中,我都试过了:root:to=>'things#index',:as=>'things'和root:to=>'things#index'当我点击http://localhost:3000/时,这两种方法都有效,而且似乎没有什么不同。:as选项有什么用? 最佳答案 :as选项形成一个命名路由。通常用于非根路由。例如:match'/search'=>'search#search',:as=>'search'#SearchController#search然后你可以这样做:search_path和sea

ruby - class << self vs self.method with Ruby : what's better?

这RubyStyleGuide告诉我们最好使用self.method_name而不是classmethod_name。但是为什么?classTestClass#badclass是否存在性能问题? 最佳答案 class善于将所有类方法放在同一个block中。如果在defself.method中添加方法form则不能保证(除了惯例和一厢情愿的想法)不会有额外的类方法隐藏在文件的后面。defself.method擅长显式声明方法是类方法,而使用class你必须自己去找容器。这些中哪一个对您来说更重要是一个主观决定,并且还取决于诸如有多少其