Tag: ruby 2.3

PG :: UndefinedTable:错误:关系“carrinho”不存在

我正在使用rails 4,ruby 2.3并且有问题。 怎么解决这个错误? PG :: UndefinedTable:错误:关系“carrinho”不存在第1行:选择“carrinho”。* FROM“carrinho”WHERE“carrinho”。“id”I … ^:SELECT“carrinho”。* FROM“carrinho “WHERE”carrinho“。”id“IS NULL LIMIT 1 我的模型是carrinho.rb我的控制器是carrinhos_controller.rb我的观点是carrinhos我的迁移是20160204181641_create_carrinhos.rb 在变形中有: inflect.plural “carrinhos”, “carrinhos” inflect.plural “carrinho”, “carrinhos” inflect.singular “carrinhos”, “carrinho” inflect.singular “carrinho”, “carrinho” inflect.irregular ‘carrinho’, ‘carrinhos’ 让我试着解决这个问题的一周。 请帮我!!

什么是Ruby2.3之前的安全导航操作符(`&.`)?

我可以找到的关于Ruby的新安全导航操作符( &. )的每个问题的答案错误地声明obj&.foo等同于obj && obj.foo 。 很容易certificate这种等价是不正确的: obj = false obj && obj.foo # => false obj&.foo # => NoMethodError: undefined method `foo’ for false:FalseClass 此外,存在多重评估的问题。 用具有副作用的表达式替换obj表明副作用仅在&&表达式中加倍: def inc() @x += 1 end @x = 0 inc && inc.itself # => 2 @x = 0 inc&.itself # => 1 什么是最简洁的2.3之前的obj&.foo避免了这些问题?

Ruby数组删除if和get delete对象

所以我有这种情况,我需要有条件地从数组中删除一些东西,这意味着我想要遍历数组中的项目并进行测试并删除通过测试的那个,然后我想要删除该项目背部。 如果我排除了这个条件方面,那么Array#delete基本上做了我想要的 – 返回已删除的项目,但不能有条件地删除。 另一方面,delete_if有条件地删除该项,但返回数组中的其余项。 出于此问题的目的,假设以下类: class Foo def test? #returns true or false end end 我可以通过以下方式轻松重现此行为: index = my_array.index {|a| a.test?} item_to_delete = my_array[index] my_array.delete item_to_delete 但我希望找到类似的东西: deleted_item = my_array.delete_if_and_return_deleted {|a| a.test?} 我不是很高兴不得不多次完成数组才能完成这个任务:/首先找到目标的索引,第二个找到目标,第三个去除目标。 伊克。 有什么想法或建议吗?

安全导航操作员(&。)为零

由于Ruby 2.3引入了安全导航操作符( &. ),也就是孤独运算符,所以nil对象上的行为似乎很奇怪。 nil.nil? # => true nil&.nil? # => nil 这样设计的行为是这样吗? 或者在添加孤独运算符时滑落的边缘情况?

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

在运行时的方法中,有没有办法知道该方法是否已通过子类中的super调用? 例如 module SuperDetector def via_super? # what goes here? end end class Foo include SuperDetector def bar via_super? ? ‘super!’ : ‘nothing special’ end end class Fu “nothing special” Fu.new.bar # => “super!” 我怎么能写via_super? ,或者,如有必要, via_super?(:bar) ?

IRB历史不适用于Ruby 2.3.0

我在OS X 10.11.4上通过rbenv安装了Ruby 2.3.0p0。 在IRB会议中,历史记录正常。 但是,我无法跨会话访问IRB历史记录。 我尝试了我的系统Ruby,2.0.0p648,IRB会话的历史记录工作正常。 我尝试通过rbenv安装相同版本的Ruby,它也有工作历史。 我在工作和非工作会话之间比较了IRB.conf的值,没有看起来IRB.conf (尽管奇怪的是,在这两种情况下, irb / ext / save-history.rb都是空白文件)。 查看我的.irb_history文件,它似乎被替换而不是附加了最新会话的命令。 我可以加载2.0.0 IRB会话并滚动这些命令就好了。 我已经尝试过rbenv irb历史记录中列出的答案没有成功保存 。 我也尝试了irb历史中选定的答案不起作用 。 我必须改变选定的答案来替换#nitems方法。 这表明正在从历史文件中读Readline::HISTORY ,并将其推送到Readline::HISTORY 。 但是,检查Readline::HISTORY没有显示任何内容。 通过Readline.readline将我的.irb_history中的前一行添加到Readline历史记录中,并指定add_hist = true,我可以破解历史。 但是,绝对不是将以前的命令添加到Readline的正确方法。 我知道我可以切换到像撬的东西,但我想弄明白这一点。 有关为什么命令没有添加到Readline的任何建议,以及如何更改它?

在Ruby中,为什么nil = 1评估为nil?

例如: nil[1] #=> NoMethodError nil[1]=1 #=> nil 这不仅仅是语法,因为变量也是如此: a = nil a[1] #=> NoMethodError a[1]=1 #=> nil 奇怪: nil.method(:[]=) #=> NameError [].method(:[]=) #=> # Ruby 2.3.0p0