次のような RoR モデル person.rb があるとします。
class Person < ActiveRecord::Base
attr_accessible :first_name, :last_name
validates :first_name, presence: true
validates :last_name, presence: true
end
私は以下のいずれかを行うことができないようです:
@full_name = @first_name + " " + @last_name
また
def full_name
@first_name + " " + @last_name
end
私の理解では、どちらも通常の Ruby クラスで動作するはずです。
私は少し読んだのですが、以下が進むべき道のようです:
def full_name
self.first_name + " " + self.last_name
end
私はこれを機能させることができますが、インスタンス変数を何らかの方法で参照できない (または新しい変数を作成できない) ように見える理由を本当に理解したいと思います。
ActiveRecord::Base はインスタンス変数に対して非常に面白いことをしますか? モデル (この場合は Person クラス) を、DB 内の単なるラッパーにすぎないように制限しますか?
attr_accessor も定義できないようです... しかし、first_name と last_name をうまく設定できます (一括代入だけでなく、p = Person.new; p.first_name = foo)
誰かがこれに光を当てることができれば、それは大歓迎です.
どうもありがとう、