ruby
1class Sample < ApplicationRecord 2 3 def set_init 4 @title = "てらている" 5 end 6 7 def get_title 8 puts @title 9 end 10 11end 12
こんなかんじで initialize でインスタンス変数を定義して、インスタンスメソッドで呼び出す場合を考えています。先頭に attr_accessor :title
とすればアクセサーとしてはつかえるのですが、インスタンス変数として扱いたいです。
このまま Sample.new
とすると
ruby
12.3.0 :001 > Sample.new 2 => #<Sample not initialized>
というエラーがでてしまいます。
initialize メソッドではなく、 set_init として普通のインスタンスメソッドとして扱ったばあいでも
ruby
1class Sample < ApplicationRecord 2 3 def set_init 4 @title = "てらている" 5 end 6 7 def get_title 8 puts @title 9 end 10 11end 12
結果はうまくいきません。
ruby
12.3.0 :001 > sample = Sample.new 2 => #<Sample id: nil, name: nil, created_at: nil, updated_at: nil> 32.3.0 :002 > sample.set_init 4 => "てらている" 52.3.0 :003 > @title 6 => nil 72.3.0 :004 >
どのようにしたら僕はインスタンス変数としてあつかいたいのですが、どのようにしたらいいでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/31 00:49
退会済みユーザー
2017/03/31 02:18