2014-12-02 42 views
0

在我的rails APPI有四种型号(比如A,B,C,d,E和F)嵌套的联接声明Rails应用程序

  • 一个属于B
  • B有很多铯
  • C属于d
  • d属于E和F

我试图建立查询,如下所示

scope = A.joins(:b, { b: [:cs, {cs: [:d, {d: [:e,:f] } ] } ] }) 

但它不工作。错误消息是schema cs (plural of c) does not exist。我正在使用Postgresql

+0

不要忘记:'连接(:c)'然后'连接(:d)' – 2014-12-02 09:00:30

+0

我在哪里添加它? – Tiamon 2014-12-02 09:07:22

+0

你能显示结果查询吗? – 2014-12-02 09:26:08

回答

1

好吧,好像你在C模型中缺少B参考(b_id)。 C需要知道它属于哪个B。之后,你可以简化查询到这个:

A.joins(b: {cs: {d: [:e, :f]}}) 
+0

我有参考(没有它的应用程序将无法正常工作)。但感谢更短的形式,虽然我仍然有相同的错误信息 – Tiamon 2014-12-02 09:15:55

+0

这很奇怪。它适用于我https://gist.github.com/anonymous/4a91183837d10ecbb7bf – 2014-12-02 09:19:03

+0

错误是在where子句。 scope.where(“lower(cddescription)like?”,“%#{params [:description]}%”) – Tiamon 2014-12-02 09:44:10