Sequel在定义graph_join_table_conditions
或many_to_many
关联时提供了one_through_one
选项,可让您在急切加载关联时在联接表上设置额外条件。
但是,当不急切加载关联(例如join_table_conditions
)时,似乎没有相应的方法可供使用。有一个join_table_block
选项,但似乎并不适用于查询。
我错过了什么吗?我知道我可以补充一下:
conditions: { join_table__some_col: 'something' }
到关联设置,但在进行多个连接或急切加载等时看起来很脆弱......
答案 0 :(得分:1)
将块传递给association方法可能是实现这一目标的最佳方法:
many_through_many :foos do |ds|
ds.where(join_table__some_col: 'something')
end
使用每个关联的查询进行常规加载和预先加载时使用该块。您仍然需要使用:graph_join_table_conditions
通过eager_graph
处理预先加载。