通过整个对象,可以看到实现模型where
在外键中搜索的代码。例如,搜索用户练习:
Exercise.where(user: user)
另一种常用方法是:
Exercise.where(user_id: user.id)
签入控制台日志,两个查询按用户ID查询,但两者之间有“最推荐”的方式?如果是的话,为什么:更优雅,更具性能?
答案 0 :(得分:2)
我会选择第一个
Exercise.where(user: user)
主要是风格偏好,但如果每个用户都在练习中变成多态,那么这种方法可以在没有任何变化的情况下工作,而第二个选项则需要更改为第一个选项。
基准测试我很快就没有表现出真正的性能差异。
答案 1 :(得分:-2)
Exercise.where('user_id = ?', user.id)
我不确定我是否正确理解了您的问题,但如果您正在寻找其他查询方式或者最佳实践,那么上面是在Rails中查询的正确方法。
它被接受为最佳实践的原因是因为它的Rails安全对策
Rails Guides: Array Conditions
Rails Security Guides: SQL Injections: Countermeasures
所以回答你的问题,是的,以这种方式查询背后有充分的理由。