我也很喜欢使用带红宝石的导轨.
我只想获得I18n.l一天的名字或一个月的名字,没有完整的日期或时间.因为我没有它.
例如,我只是想以国际化为例
= l Date::DAYNAMES[0]
Run Code Online (Sandbox Code Playgroud)
要么
= l Date::MONTHNAME[0]
Run Code Online (Sandbox Code Playgroud)
可能吗?
我有一个数组:
arr=[[1,2,3],[4,5],[6]],
Run Code Online (Sandbox Code Playgroud)
我有以下代码:
arr.transpose
Run Code Online (Sandbox Code Playgroud)
但它不起作用,如何解决?
我正进入(状态
[[1,2,3],[4,5],[6]].transpose
IndexError: element size differs (2 should be 3)
from (irb):13:in `transpose'
from (irb):13
from /home/durrant
Run Code Online (Sandbox Code Playgroud)
我的解决方案
arr.reduce(&:zip).map(&:flatten)
Run Code Online (Sandbox Code Playgroud)
输出:
[[1, 4, 6], [2, 5, nil], [3, nil, nil]]
Run Code Online (Sandbox Code Playgroud) 我有一个字符串作为参数传递给函数.在这里,我想检查字符串是否只包含数字.所以我有一张如下的支票:
def check_string(string)
result = false
if string.to_i.to_s.eql? string
result = true
end
result
end
Run Code Online (Sandbox Code Playgroud)
但是当字符串以0开头时出现问题.在这种情况下,返回false.
check_string('123') #=> true
check_string('0123') #=> false
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
所以我感兴趣的是有没有办法将字符串转换为活动记录类.
示例:我有一个User继承自的类ActiveRecord::Base.有没有什么办法可以字符串转换"User"到User类,所以我可以使用ActiveRecord的方法,如find,where等.
我不太清楚如何表达这一点,所以我只举例.
如果我写:
some_method(["a", "b"], 3)
Run Code Online (Sandbox Code Playgroud)
我希望它能恢复某种形式
[{"a" => 0, "b" => 3},
{"a" => 1, "b" => 2},
{"a" => 2, "b" => 1},
{"a" => 3, "b" => 0}]
Run Code Online (Sandbox Code Playgroud)
如果我传入
some_method(%w(a b c), 2)
Run Code Online (Sandbox Code Playgroud)
预期的回报值应该是
[{"a" => 2, "b" => 0, "c" => 0},
{"a" => 1, "b" => 1, "c" => 0},
{"a" => 1, "b" => 0, "c" => 1},
{"a" => 0, "b" => 2, "c" => 0},
{"a" => 0, "b" => 1, "c" => …Run Code Online (Sandbox Code Playgroud) 当foo是未定义的变量时,尝试访问它会引发NameError:
foo
#=> NameError: undefined local variable or method `foo'
a = foo
#=> NameError: undefined local variable or method `foo'
Run Code Online (Sandbox Code Playgroud)
为什么不foo = foo加NameError?
foo = foo
#=> nil
Run Code Online (Sandbox Code Playgroud)
昨天,我花了几个小时来跟踪此行,这是程序中的错误...
capture = capture.to_i
Run Code Online (Sandbox Code Playgroud)
我原本打算做的是转换capture_str为Integer。相反,我所做的是nil通过说来引入a capture = capture,然后将零变为a 0。所以我在做这个...
capture = capture.to_i
#=> 0
Run Code Online (Sandbox Code Playgroud)
但是我一直错误地假设NameError会像这样抛出一个变量...
capture = capture_str.to_i
#=> NameError: undefined local variable or method `capture_str'
Run Code Online (Sandbox Code Playgroud) 我有一个元素列表(例如数字),我想检索所有可能的对的列表.我怎么能用Ruby做到这一点?
例:
l1 = [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
结果:
l2 #=> [[1,2], [1,3], [1,4], [1,5], [2,3], [2,4], [2,5], [3,4], [3,5], [4,5]]
Run Code Online (Sandbox Code Playgroud) 在irb中尝试以下内容:(我使用的是Ruby 2.0.0-p247)
blah
#=> NameError: undefined local variable or method `blah' for main:Object
if false
blah = 'blah'
end
#=> nil
blah
#=> nil
Run Code Online (Sandbox Code Playgroud)
我很惊讶,blah分配nil甚至当if条件计算为false.我认为在if条件评估时跳过了代码false.
有Ruby内部知识的人可以解释一下这是怎么发生的吗?
谢谢
我想检查一个ActiveRecord实例是否在数据库方面被更改.就像是:
p1 = Product.first
p1.name #=> "some name"
p2 = Product.first
p2.name = "other name"
p2.save #=> true
p1.database_changed? #=> true
Run Code Online (Sandbox Code Playgroud)
我目前正在将记录的属性与持久化属性进行比较:
class Product < ActiveRecord::Base
def database_changed?
Product.find(id).attributes != attributes
end
end
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但我想知道是否有内置的方法来查找数据库更改?
由于Net::ReadTimeout错误,我们的测试间歇性失败。
我们尚未找到永久解决方案。现在我们想尝试挽救该特定错误并重新运行测试。这不是一个理想的解决方案或真正的解决方案,但我们在短期内需要一些东西。
我们如何重新运行失败的 rspec 测试?我的意思是测试套件如何自动为该测试执行此操作?
我们可以这样捕获错误:
# spec/support/capybara.rb
def rescue_net_read_timeout(max_tries = 1, tries = 0, &block)
yield
rescue Net::ReadTimeout => e
Rails.logger.error e.message
end
Run Code Online (Sandbox Code Playgroud)
但我们如何让它尝试重新运行该测试呢?我们想要尝试重新运行测试,然后如果重新运行通过且没有错误,则继续进行(理想情况下将其记录下来),否则将真正失败并考虑测试,因此套件失败。
ruby ×8
arrays ×2
activerecord ×1
capybara ×1
combinations ×1
permutation ×1
rails-i18n ×1
rspec ×1
transpose ×1
variables ×1