我有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")
为什么会这样?
答案 0 :(得分:0)
这是因为它基本上是多态关联。这意味着playerable可能是2个不同的类,因此rails在调用多态关联类时不能指望你在寻找User.first。
你可以这样做:
Player.where(playerable_type: => "User").first
希望这会有所帮助。
答案 1 :(得分:0)
如果你有
has_many :players, :as => :playerable
您可以在用户模型中执行
User.first.players