誰かがこれら二つの違いを説明してもらえ:私は1つを想定していルビー構文(レールモデル)
self.price
self[:price]
:
は私が持っているモデル内のモデルの製品
を持っていると言います属性(商品価格)を呼び出す一方、もう一方は「価格」というメソッドを呼び出します。
これは本当ですか、どちらがどちらですか?
誰かがこれら二つの違いを説明してもらえ:私は1つを想定していルビー構文(レールモデル)
self.price
self[:price]
:
は私が持っているモデル内のモデルの製品
を持っていると言います属性(商品価格)を呼び出す一方、もう一方は「価格」というメソッドを呼び出します。
これは本当ですか、どちらがどちらですか?
Railsは、値を取得/設定するためのメソッドを動的に作成するアクセサーとしてこれらのモデル属性を作成します。あなた自身の授業でもお楽しみください。http://ruby-doc.org/core/Module.html#method-i-attr_accessor
メソッドを呼び出す両方:
最初のものは方法:price
を呼び出します。
第2の方法は、:[]
というメソッドを呼び出し、:price
を引数として渡します。
あなたは
self.method(:[])
#=> #<Method: User(ActiveRecord::AttributeMethods)#[]>
を実行することにより、基本的にはいつでもあなたは方法がどこから来る、あなたがObject#method
を使用することができ、知りたいことを確認することができます。
ありがとうございます。 – Brad
属性と同じ名前の独自のメソッドを作成すると、メソッドが呼び出されて、デフォルトのレールではなくなりますか? – Brad
これを達成したいと思われる投稿があります:http://stackoverflow.com/questions/373731/override-activerecord-attribute-methods – ddubs