1

興味深い動作が見られます。洞察が必要です。

Person と User の 2 つのモデルがあります。User は Person から継承します。users db テーブルはなく、人だけです。

Person の検索モデルを使用して作成したユーザーを検索すると、person 型のオブジェクトが返されることを期待しています。ただし、そのタイプはユーザーです。

@person = Person.find(params[:id])
@person.class 
# outputs 'User'

誰かが人物オブジェクトを返さない理由を説明してください。

4

1 に答える 1

3

それが望ましい振る舞いです。見つかった人物の行のtype列には、値「User」が含まれています。そのため、返される型Userもです。

これUserもであることに注意してください。これにより、任意のインスタンスをインスタンスのようにPerson扱うことができます。UserPerson

于 2013-03-04T21:04:40.427 に答える