草庐IT

test_nil_is_an_object

全部标签

ruby-on-rails - 不将 nil 值分配给哈希

当事物在ruby​​中为nil时,是否有将事物分配给哈希的简写或最佳实践?例如,我的问题是我正在使用另一个散列来构建它,如果其中的某些内容为nil,它会将nil分配给该键,而不是让它单独存在。我明白为什么会这样,所以我的解决方案是:hash1[:key]=hash2[:key]unlesshash2[:key].nil?因为我不能在键实际指向nil的has中有一个值。(我宁愿有一个空散列,也不愿有一个有{:key=>nil}的散列,这是不可能发生的)我的问题是有没有更好的方法来做到这一点?我不想在作业结束时执行delete_if。 最佳答案

ruby-on-rails - ruby rails : How do you check if a file is an image?

如何检查文件是否为图像?我想你可以使用这样的方法:defimage?(file)file.to_s.include?(".gif")orfile.to_s.include?(".png")orfile.to_s.include?(".jpg")end但这可能有点低效而且不正确。有什么想法吗?(我正在使用回形针插件,顺便说一句,但我没有看到任何方法来确定文件是否是回形针中的图像) 最佳答案 请检查一次MIME::Types.type_for('tmp/img1.jpg').first.try(:media_type)=>"image"

ruby - 未定义方法 '>' 为 nil :NilClass <NoMethodError>

好的,我有下面的代码defupdate_state_actionsstates.eachdo|state|@state_turns[state.id]-=1if@state_turns[state.id]>0&&state.auto_removal_timing==1endend现在在......@state_turns[state.id]-=1if@state_turns[state.id]>0&&state.auto_removal_timing==1它说错误in'blockupdate_state_actions':Undefinedmethod'>'fornil:NilClas

ruby-on-rails - I18n : How to check if a translation key/value pairs is missing?

我正在使用RubyonRails3.1.0和I18ngem.我(正在实现一个插件)我想在运行时检查I18n是否缺少翻译键/值对,如果是,则使用自定义字符串。也就是说,我有:validates:link_url,:format=>{:with=>REGEX,:message=>I18n.t('custom_invalid_format',:scope=>'activerecord.errors.messages')}如果.yml文件中没有如下代码activerecord:errors:messages:custom_invalid_format:Thisisthetesterrormes

Ruby 未定义方法 `[]' 为 nil :NilClass (NoMethodError)

我正在尝试使用ruby​​制作一个Conway的人生游戏版本。我用@play_area创建了一个Grid类作为实例变量。但是,当我运行我的代码时,@play_area在已经被评估两次之后变为nil(当在行中评估时if@play_area[x_mod][y_mod].alive)。为什么会这样?编辑这是初始化函数:definitialize(sizex,sizey)@x_length=sizex@y_length=sizey@play_area=[]#initializedeadcells@x_length.timesdo|x|@play_area[x]||=[]@y_length.ti

ruby - 导轨/RSpec : How to test #initialize method?

如何使用RSpec指定#initialize行为?例如这里:generator.rbclassGeneratorattr_accessor:seeddefinitialize(seed=nil)@seed=seed||pick_seedenddefpick_seedTime.now.to_iendendgenerator_spec.rbrequire'generator'describeGeneratorit"calls'pick_seed'methodunlessseedspecified"doendend我想设置从#initialize方法调用的pick_seed方法的期望值。

ruby - 用于 nil-or-empty 的惯用 Ruby 过滤器?

我正在寻找一种更惯用的方法来过滤掉数组中的nil或空元素。我有很多形式的方法:defjoined[some_method,some_other_method].compact.reject(&:empty?).join('-')end这将采用some_method和some_other_method的结果,并仅返回非零的结果(compact是本质上等同于reject(&:nil?))和非空。Array或Enumerable中是否有任何东西可以一次获得相同的东西? 最佳答案 在Rails中,您可以执行reject(&:blank?),

ruby-on-rails - rails 5, "nil is not a valid asset source"

我刚刚升级到Rails5,在尝试显示图像时遇到了一个奇怪的问题。我有Rails4的确切代码:但升级后我得到:nilisnotavalidassetsource在升级到Rails5之前,我没有遇到任何类似的问题。这里可能有什么问题?会不会是其他原因而不是Rails升级问题? 最佳答案 问题是我试图显示一张不存在的图片。添加unlessarticle.image.blank?解决了这个问题:编辑:在Rails4中,这将不会毫无错误地呈现任何内容,而在Rails5它会引发错误。所以这实际上是一个升级问题。非常感谢@BookOfGreg指出

ruby - 为什么 `puts(nil or 4)` 在 Ruby 中失败?

当我这样做时:puts(nilor4)Ruby提示:SyntaxError:syntaxerror,unexpectedkeyword_or,expecting')'这是为什么呢?puts(nil||4)确实有效,但我想知道为什么或没有。我认为两者之间的区别仅在于它们的运算符优先级。(我知道表达式nilor4似乎没有用,因为它总是返回4。为了简单起见,这只是一个例子。我的实际表达式是整数(ENV['WD']或4)。) 最佳答案 简答因为这就是ruby​​语法。更长的答案and/or关键字被设计用于控制流结构。考虑这个例子:defdi

arrays - 如何通过 & :key as an argument to map instead of a block with ruby?

我写了这段代码:my.objects.map{|object|object.key}我的rubocop说:Pass&:keyasanargumenttomapinsteadofablock.有没有捷径可以做同样的事情? 最佳答案 Pass&:keyasanargumenttomapinsteadofablock意思是:my.objects.map(&:key) 关于arrays-如何通过&:keyasanargumenttomapinsteadofablockwithruby?,我们在S