2

User モデルがあり、名前があるとします。簡単に読み書きできます。

user = User.new
user.name = "Peter Griffin"
user.name #=> "Peter Griffin"

また、属性ハッシュを介して行うこともできます (キーは文字列です):

user.attributes["name"] = "Peter Griffin"
user.attributes["name"] #=> "Peter Griffin"

そして、他のいくつかの奇妙なハッシュを使用します(今回はキーはシンボルです):

user[:name] = "Peter Griffin"
user[:name] #=> "Peter Griffin"

この方法の違いは何ですか?メソッドの代わりにハッシュを使用する必要がある特定のケースはありますか? また、属性に関する適切なドキュメントが見つからなかったので、ドキュメントへのリンクに感謝します。

4

2 に答える 2

-2

activerecordを使用している場合、最初の方法を使用すると、モデル属性を更新するときに99%の確率で十分に機能するはずです。

これで、activerecordのものを使用せずにカスタムモデルを最初から作成する場合、ほとんどの場合、ハッシュキーを介してモデル属性を参照します。それはあなたがそこに持っている3番目の方法が役に立つときです。もちろん、最初の方法のように機能するようにカスタムモデルを変更できます。

モデル属性ハッシュを返すメソッドを使用した2番目の方法attributesは、すべてのモデルハッシュを参照する場合に役立ちます。たとえば、これはすべてのモデル属性とその値になります。

@user.attributes.each do |attr, val|
  puts "#{attr} : #{val}"
end
于 2012-12-20T22:01:15.300 に答える