2017-06-20 4 views
2

最近、私はActive RecordのようなORMを実装する必要がありましたが、PHPを使用しました。だから私が書いた最初のことはレコードの作成です。Rails ORMはこのように動作していますか?

p = Product.new 
p.name = "Some Book" 

と呼ばれる作成方法より:限り、すべてのレコードは、オブジェクトのように扱わとして、あなたはそうのような属性を直接クラスに値を割り当てることができます。

ActiveRecordが最初に"DESCRIBE table_name"というデータベースにクエリを送信して、それがどのような列を持っているのかをクラス属性に変換するのであれば、知りたいことはありますか?

このような場合、このメソッドはパフォーマンスに優れています(モデルのオブジェクトを作成するたびにクエリを送信する必要があります)。

+0

私はPHPで多くのARパターン実装があると信じています。あなたの質問は、あなたは 'ActiveRecord :: Base.connection.schema_cache'から始めることができます –

答えて

1

いいえ、ActiveRecordは、Modelクラスの新しいインスタンスを作成するときにdbにクエリを実行しません。ルビーでは、attr_accessorgetter sおよびsetter Sを定義するのに役立ち、レールにあなたは

p = Product.new 
#=> #<Product id: nil, created_at: nil, updated_at: nil> 

としてコンソールに何デシベルコール、ちょうど新しいProductクラスのオブジェクトを確認することはできません。

+0

私はそれがクラス(モデル)の存在しない属性に値を渡すことができます混乱しています。だから、おそらく、いくつかのセッターが定義されていると、ユーザーがいくつかの属性を設定しようとしているとき、それはCREATEメソッドが呼び出されたときにトリガーされる何らかの並べ替えに保存され、 ? – Src

関連する問題