Ruby on rails 在Ruby中编写Where和condition查询的正确方法是什么?

Ruby on rails 在Ruby中编写Where和condition查询的正确方法是什么?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,谁能帮我写出正确的位置和条件?或者如果它是对的,有什么区别 一, 二, 三, 这三个代码段之间没有区别(如果您不使用任何可能使第三个代码段中的列名不明确的联接) 您可以通过在Rails控制台中调用它们并查看生成的SQL代码来确认 我认为第一个是最可读的 第一个 第二:只要不需要动态添加条件,就避免链接“where”函数 第三:在某些情况下,删减原始SQL可能是个好主意。但是,如果将SQLite用于原型,将PostgreSQL用于生产,会怎么样呢?是的,他们使用SQL语言作为标准,但对其进行了很好

谁能帮我写出正确的
位置和
条件?或者如果它是对的,有什么区别

一,

二,

三,


这三个代码段之间没有区别(如果您不使用任何可能使第三个代码段中的列名不明确的联接)

您可以通过在Rails控制台中调用它们并查看生成的SQL代码来确认

我认为第一个是最可读的

第一个

第二:只要不需要动态添加条件,就避免链接“where”函数

第三:在某些情况下,删减原始SQL可能是个好主意。但是,如果将SQLite用于原型,将PostgreSQL用于生产,会怎么样呢?是的,他们使用SQL语言作为标准,但对其进行了很好的抽象。

我建议使用gem,尽管ActiveRecord在这里工作得很好,但如果在查询中有多个OR和and,那么命令的可读性并不总是很高

这就是您的请求在squel中的外观

Trustee.select(:id).where { (secret_key == seckey) & (user_id == my_user_id) &  (primary_trustee == '1') }

这比所提供的三个例子更糟糕,而且它也不能回答问题。
get_primary_status = Trustee.select(:id).where(:secret_key => seckey).where(:user_id => user_id).where(:primary_trustee => '1')
get_primary_status = Trustee.select(:id).where('secret_key = (?) AND user_id = (?) AND primary_trustee = (?)', seckey, user, '1')
Trustee.select(:id).where { (secret_key == seckey) & (user_id == my_user_id) &  (primary_trustee == '1') }