除了使用execute方法之外,有没有办法在rails中编写此查询?
connection.execute("select value_1, value_2, value_3 from table1 join table2 on table2.table1_id = table1.id where table2.table3_id = table3_id_value")
答案 0 :(得分:0)
如果你弯曲到Rails约定来复杂化和大写名称,那就容易多了。
然后,如果table1真的是foos
而table2是bars
,对应于Active Record Foo
和Bar
,声明,那么你需要
belongs_to :foo
在Bar
记录中。这对应于外键foo_id
。然后添加匹配
has_many :bars
在Foo
记录中。这样可以检索bars
引用foo
的所有foo.bars
条记录Foo.join(:bar).select(:value_1, :value_2, :value_3)
.where('bars.table3_id = ?, table3_id_value)
。完成所有这些后,查询将是
{{1}}
可以覆盖表和外键名称的默认约定。在the Active Record query documentation中查找正确的选项。