无法在多态字段上的条件

时间:2012-07-06 21:07:07

标签: ruby-on-rails where polymorphic-associations

我有3个型号:播放器,用户,Bot

播放器具有名为'playerable'的多态字段。 播放器表看起来像这样:

id, playerable_id, playerable_type

当我想要做的时候:

Player.where(playerable: User.first)

我得到:未知栏'players.playerable'

当我这样做时它会起作用:

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

为什么会这样?

2 个答案:

答案 0 :(得分:0)

这是因为它基本上是多态关联。这意味着playerable可能是2个不同的类,因此rails在调用多态关联类时不能指望你在寻找User.first。

你可以这样做:

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

希望这会有所帮助。

答案 1 :(得分:0)

如果你有

has_many :players, :as => :playerable
您可以在用户模型中

执行

User.first.players