質問

誰かがこのようなことに気づいたことがありますか?なぜそれが起こっているのですか?

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パラメーターと見なされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top