Ruby on rails rails多态查询

Ruby on rails rails多态查询,ruby-on-rails,activerecord,polymorphic-associations,Ruby On Rails,Activerecord,Polymorphic Associations,为什么会这样 @discussions = Discussion.where(:discussable => @discussable) 不起作用。然而,这项工作: @discussions = Discussion.where(:discussable_id => @discussable.id, :discussable_type => @discussable.class.to_s) 谢谢 因为在第一个示例中,您传递的是一个完整的模型实例。属性必须是一个id(整数)

为什么会这样

@discussions = Discussion.where(:discussable => @discussable) 
不起作用。然而,这项工作:

@discussions = Discussion.where(:discussable_id => @discussable.id, :discussable_type => @discussable.class.to_s)

谢谢

因为在第一个示例中,您传递的是一个完整的模型实例。属性必须是一个id(整数),并且传递一个对象。第二个是可以的,因为您(正确地)传递了id。

看起来像是一个月前合并到master中修复此问题的pull请求:


不幸的是,它将只在Rails 4中发布:(

我认为Rails比find更聪明。我猜哪里的方法比find更严格。谢谢!这其实是有原因的。传递对象可以通过序列化完成。这就是为什么整数必须是整数:)当每次查询多态关联时都必须同时指定_id和_type时,这是非常笨拙和缓慢的。我认为Rails可以更智能地检测这种情况。