2011-01-24 15 views

答えて

2

@patientは、これが呼び出されるクラスのインスタンス変数です。おそらくこれはあなたのコントローラで起こりそうですが、それはあなたのコントローラのインスタンス変数です。 @ -charはインスタンス変数部分を示します。

患者。 RailsはORM(オブジェクト・リレーショナル・マッピング)に従います。つまり、すべてのデータベース表に対応するクラスが存在します。データベーステーブルをラップするこれらのクラスは、データベーステーブルレベルの操作を実行するメソッドを提供します。ここの患者はクラスの名前です。

は、患者クラスによって提供されるクラスレベルのメソッドです。

(17)は、findメソッドに渡されるパラメータです。 Railsはpatient-tableを検索し、id = 17のレコードを検索しようとします。

+0

インスタンス変数と通常の変数との違いは何ですか? – pedrozath

+0

@pedrozath:http://stackoverflow.com/questions/3757481/rails-local-variables-versus-instance-variables – hade

3

単純に言って:id=17にはpatient dataが見つかり、@patientオブジェクトに設定します。

ご了承ください。

+0

どのデータベーステーブルですか? – pedrozath

+0

テーブルは患者である –

+0

患者テーブルにあります(特に指定しない限り)。 ActiveRecordは、命名規則を使用してRailsオブジェクトを対応するデータベーステーブルにバインドします。 –

2

上記のコードは、テーブルからレコードを取り出し(rails conventionによって 'patients')、それを@patientインスタンス変数に割り当てます。

検索はActiveRecordのからの継承::ベースを介して患者をモデル化するために利用可能である方法である

モデル患者が直接あなたが一致しているあなたのdatabase.ymlの パラメータ17で設定したデータベース内のテーブルにマップテーブルの主キーと一致するレコードが返されます。主キーと一致するので、1つのレコードのみが検索され、返されます。

値が17のレコードが見つからない場合は、ActiveRecord :: RecordNotFound例外がスローされます。

関連する問題