草庐IT

self-updating

全部标签

ruby-on-rails - 将 bool 值传递给 update_attributes 的问题

我有以下模型:classGuestCateringtruevalidates:order_number,:presence=>truevalidates:orderable,:presence=>trueend但是当我尝试使用以下代码更新现有的GuestCatering时:guest_catering.update_attributes(:orderable=>false)guestcatering变量是一个有效的GuestCatering对象。guest_catering对象更新后出现错误,像这样:nil}>但是当我传递一个orderable=>true时,一切都很好,没有错误。这里

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 - bundler 能告诉我 Gemfile 中的哪些 gems 有更新的版本吗(例如 bundle update 的试运行)

有没有办法运行bundleupdate在假装模式下,类似于Rails生成器的-p(假装)标志或cap的-n(试运行)标志?我在想像这样的事情:$>bundleupdate-pFetchingsourceindexforhttp://rubygems.org/Thefollowinggemshaveupdatedversions:...listofgems... 最佳答案 Bundler1.1引入了一个新的“过时”功能,这正是我一直在寻找的。PatShaughnessy很棒write-up关于新功能。用他的话说,bundleoutda

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

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

ruby-on-rails - 如何在不触及 updated_at 属性的情况下更新单个属性?

我怎样才能做到这一点?试图创建2个方法,称为defdisable_timestampsActiveRecord::Base.record_timestamps=falseenddefenable_timestampsActiveRecord::Base.record_timestamps=trueend和更新方法本身:defincrement_pagehitupdate_attribute(:pagehit,pagehit+1)end使用如下回调打开和关闭时间戳:before_update:disable_timestamps,:only=>:increment_pagehitafte

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 - `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 - 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你必须自己去找容器。这些中哪一个对您来说更重要是一个主观决定,并且还取决于诸如有多少其

ruby - 如何使用 Ruby 的 self 关键字

据我对self的理解,它指的是类的当前实例。这不是一直以来的默认行为吗?例如,不是self.var_one=method(args)相当于var_one=method(args)如果是这样,self有什么用? 最佳答案 有几个重要的用途,其中大部分基本上是为了消除实例方法、类方法和变量之间的歧义。首先,这是定义类方法的最佳方式:classFoodefself.bar"classmethodbar"enddefbar"instancemethodbar"endendFoo.bar#returns"classmethodbar"foo=