基于第一个表的列连接activerecord中的表

时间:2017-06-14 04:54:04

标签: ruby-on-rails postgresql activerecord

我想完成这样的连接:

MyModel.joins(:other_model).
where(column: 123, other_model { other_column: column_in_my_model })

在实践中,这就像

SELECT * FROM my_model m
INNER JOIN other_model o on m.column = o.foreign_key
WHERE m.column = 123 AND o.other_column = m.column_in_my_model

在activerecord版本中,没有传递SQL字符串就无法引用我所知道的column_in_my_model。是否可以使用activerecord语法执行此操作而不传递原始SQL字符串? Arel也行。

2 个答案:

答案 0 :(得分:0)

你可以做这样的事情

MyModel.joins(:other_model)
       .where(my_model_column: 123)
       .where('column_in_my_model = other_model_column')

答案 1 :(得分:0)

MyModel.find(:all,
  :joins=>" JOIN other_model_table_name ON other_model_table_name.column = my_models.column",
  :conditions=>"my_models.column = '123' AND other_model_table_name.column = my_models.column"
)