0

我有 3 个模型:玩家、用户、机器人

Player 具有名为“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 个不同的类,因此 rails 不能指望您在调用多态关联类时查找 User.first。

你可以这样做:

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

希望这可以帮助。

于 2012-07-06T22:00:44.577 回答