Railsでは、レールが提供する属性を介してdb列にアクセスできますが、これを変更できますか? たとえば、名前の列を持つデータベースがあり、次のようなものを実装できますか。
def name
"sir" + name
end
試してみましたが、スタックオーバーフローになります。これを実現する方法があります。
さらに質問です。name と self.name に違いはありますか。
Railsでは、レールが提供する属性を介してdb列にアクセスできますが、これを変更できますか? たとえば、名前の列を持つデータベースがあり、次のようなものを実装できますか。
def name
"sir" + name
end
試してみましたが、スタックオーバーフローになります。これを実現する方法があります。
さらに質問です。name と self.name に違いはありますか。
def name
"sir" + read_attribute(:name)
end
ただし、この慣行は避けてください。代わりに、「仮想属性」とも呼ばれる追加のゲッター/セッターを使用してください。詳細については、この回答をお読みください:レールで属性を装飾する
あなたの場合、奇妙な副作用もあります。属性がアクセスされるたびに、名前が追加されます。3回の通話の後、あなたは
"sir sir sir name"
確かに、あなたはすることができます
def name
n = read_attribute(:name)
if /^sir/.match(name)
n
else
"sir #{n}"
end
end
しかし、真剣に、これをしないでください。
考えられる合併症を認識しているが、それでもこれを行う必要がある場合は、次のようにします。
def name
"sir" + self[:name]
end