Ruby on RailsコンソールのSumの奇妙な動作
-
25-10-2019 - |
質問
誰かがこのようなことに気づいたことがありますか?なぜそれが起こっているのですか?
ruby-1.9.2-p290 :006 > User.count
(0.4ms) SELECT COUNT(*) FROM "users"
=> 102
ruby-1.9.2-p290 :007 > User.count + 1
(0.4ms) SELECT COUNT(*) FROM "users"
=> 103
ruby-1.9.2-p290 :008 > User.count+ 1
(0.4ms) SELECT COUNT(*) FROM "users"
=> 103
ruby-1.9.2-p290 :009 > User.count+1
(0.4ms) SELECT COUNT(*) FROM "users"
=> 103
ruby-1.9.2-p290 :010 > User.count +1
(0.5ms) SELECT COUNT(1) FROM "users"
=> 102
使用 ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
&& Rails 3.1.3
余分なもの:
ruby-1.9.2-p290 :007 > "ayay".length + 1
=> 5
ruby-1.9.2-p290 :008 > "ayay".length +1
ArgumentError: wrong number of arguments(1 for 0)
from (irb):8:in `length'
...
解決
これは、ルビーホワイトスペースでの事実に依存します 可能です 重要。 Rubyがあなたの例をさまざまな方法で解釈するため、さまざまな結果が表示されます。そう
最初:
"ayay".length + 1
のようなものです
"ayay".length.+(1)
そして2番目:
"ayay".length +1
のようなものです
"ayay".length(+1)
このようにできます 見る Rubyが2番目のケースでエラーを与える理由。
について カウント 問題:Rubyはコードを次のように解釈します。
User.count(+1)
そして、あなたが生成されたSQLからわかるように、違いがあるので +1
column_nameパラメーターと見なされます。
所属していません StackOverflow