0

プレイヤー、ユーザー、ボットの 3 つのモデルがあります。

プレーヤーには、「playerable」という名前のポリモーフィック フィールドがあります。プレイヤーテーブルは次のようになります。

id, playerable_id, playerable_type

私がやろうとしているとき:

Player.where(playerable: User.first)

私は得ています:不明な列「players.playerable」

私がするとき、それは動作します:

Player.where(playerable_id: User.first.id, playerable_type: "User")

なぜこれが起こっているのですか?

4

2 に答える 2

0

あなたが持っている場合

has_many :players, :as => :playerable

ユーザーモデルでは、次のことができます

User.first.players
于 2012-07-07T00:31:56.547 に答える
0

それは本質的に多形的関連だからです。これは、playerable が潜在的に 2 つの異なるクラスである可能性があることを意味します。したがって、レールは、ポリモーフィックに関連付けられたクラスを呼び出すときに User.first を探すことを期待できません。

あなたがすることができます:

Player.where(playerable_type: => "User").first

お役に立てれば。

于 2012-07-06T22:00:44.577 に答える