私は著者のクラスを持っている:to_s
の定義Rubyがto_sを自動的に実行しないのはなぜですか?
class Author < ActiveRecord::Base
def to_s
name
end
end
は私がputs Author.first
を行うことができますが、ないputs Author.first.rjust(10)
:Rubyが自動的に文字列メソッドの前にto_s
をしようとした場合
NoMethodError: undefined method `rjust' for #<Author:0x21eb5d4>
は、それは良いことではないだろうこのようなケース?この現象を起こす方法はありますか?
'それsuper.method_missing(sが、* A)'間違っています。同じ引数を持つメソッドのスーパークラスのバージョンを呼び出す 'super'だけでなければなりません。 Rubyでは、スーパーは受信者ではなくメソッドのように動作します。 – Chuck
@チャック:ありがとう、固定。私は投稿する前に自分のコードをテストしましたが、 "super"のアクションが例外をスローすることになっているので、だまされました - これは、この特定のケースでは、誤った構文が期待通りに機能したことを意味します。 (rubyはsuperの戻り値で "method_missing"を呼び出そうとしないので) –