は、次のように仮定すると:self.attributeと@attributeの利点は?
def create_new_salt
self.salt = self.object_id.to_s + rand.to_s
end
なぜそれが使用することをお勧めし「自己」。インスタンス変数 '@salt'ではなく?
は、次のように仮定すると:self.attributeと@attributeの利点は?
def create_new_salt
self.salt = self.object_id.to_s + rand.to_s
end
なぜそれが使用することをお勧めし「自己」。インスタンス変数 '@salt'ではなく?
self.salt =
を使用すると、定義されている場合はsalt=
メソッドが使用されます。これは、salt=
メソッド内のエラーチェック/変換が確実に使用されるようにするのに便利です。しかし、明示的なsalt=
メソッド(例えば、attr_accessor
によって作成される可能性があります)が必要であることを意味します。これは必ずしも良い考えではありません。
要約:カスタムsalt=
メソッドを使用している場合はself.salt =
を使用してください。 @salt
を正確に知っている場合、またはカスタムsalt=
メソッドがない場合は、@salt =
を使用してください。
最後の注意:私はおそらく、このように書くと思います(私の意見では、それは少し明確だ)
def create_new_salt
@salt = "#{object_id}#{rand}"
end
EDIT:別の答えに@チャックのコメントのおかげで、私は削除するために、これを修正しましたself.
- 無料コード - それは間違っていた。
さらにピーターの答えに:
もう一つの興味深い点は、self.salt=
は塩=メソッドがプライベートである場合でも呼び出すことができるということです。これは、明示的な受信者でプライベートメソッドを呼び出せないという通常のRubyルールの例外です。
ありがとうございましたPeter!私は同意する、私はあなたのバージョンが好きです。 – Kevin