我对rails很新,我有一个关于在rails中加入两个表的问题
我有两张桌子: -
TableA(Id,ancestry_depth,...),其中使用祖先gem创建了深度 表B(Id,TableA_id,TableC_id)
我想用一些条件提取TableA_id列,我的sql语句看起来像这样
(select * from TableB
join TableA
on TableA.Id = TableB.TableA_id
where ancestry_depth = 5)
我无法将此查询转换为rails query
请帮我解决在rails4.1.2
中执行此操作的最佳方法答案 0 :(得分:0)
你可能想尝试这样的事情:
# TableB.joins(<association name>).where(<table name>: { ancestry_depth: "5" })
TableB.joins(:tablea).where(tableas: { ancestry_depth: "5" })
由于您使用的是Rails 4,您可能还有兴趣查看merge
选项,该选项允许您在该模型的作用域中定义TableA条件,使它们与TableB逻辑分开。有点像...
# In TableA class:
scope :my_ancestry_scope, -> { where(ancestry_depth: "5") }
# The join query:
TableB.joins(:tablea).merge(TableA.my_ancestry_scope)