我目前正在使用ActiveRecord在我的rails应用程序中执行查询。
我实际上需要订购我的记录,但有时这个订单是用外键制作的(或者在某些情况下用" n + 2"键 - 我不知道#39;我真的知道这个名字。)
事实是这个顺序是动态的,我无法真正解决所有可能性,也不能使用join
方法(ActiveRecord
)因为我的表之间的关系不同。 ..
是否可以在没有任何ActiveRecord::Relation
的情况下使用外键订购join
个对象?
此外,我还要指出,在我的order
之前,在where
(s)中,我恢复了一些外国记录,但没有join
。这是未来的变化,现在我试着通过上面解释的内容得到我想要的东西。
问候。
答案 0 :(得分:1)
你不能使用includes
吗?
如果您的查询使用外键并且您不会使用联接,我将无法看到许多其他解决方案...
您可以尝试这样的事情:
query = Base_Model.includes(:model_with_first_foreign_key, model_with_other_foreign_key: [:model_with_nested_foreign_key, :model_with_other_nested_foreign_key])
在此之后,您应该能够访问所有包含模型的任何属性,只要它们的关系被正确定义:
result = query.order(:any_property)