【问题标题】:rails polymorphic queryrails 多态查询
【发布时间】:2011-04-08 01:50:33
【问题描述】:

为什么会这样

@discussions = Discussion.where(:discussable => @discussable) 

不起作用。然而这项工作:

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

    看起来修复此问题的拉取请求已在 1 个月前合并到 master 中:

    https://github.com/rails/rails/pull/7273

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

    【讨论】:

      【解决方案2】:

      因为在第一个中,您传递了一个完整的模型实例。该属性必须是一个 id(integer) 并且您传递一个对象。第二个没问题,因为你传递了 id(正确)。

      【讨论】:

      • 我认为 Rails 比这更聪明。我猜哪里的方法比 find 更严格。谢谢!
      • 其实是有原因的。传递一个对象可以通过序列化来完成。这就是为什么整数必须是整数的原因:)
      • 每次查询多态关联时都必须指定 _id 和 _type 时,这非常尴尬和迟缓。我认为 Rails 可以更智能并检测到此类情况。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 2020-09-08
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多