Ruby on rails railsactiverecord的原始SQL

Ruby on rails railsactiverecord的原始SQL,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,因为我对Rails的认识比SQL要新,所以我选择了一条捷径来构建一个相当复杂的(对我来说,无论如何)查询 好消息:我的查询正在运行 坏消息:我被黑客代码缠住了,不知道如何将动态变量放入其中(如果它是Rails友好的格式,这应该很容易) 以下是我的问题(为了便于阅读,将其分解): ActiveRecord::Base.connection.select_all(“从商户、商品、销售、用户、用户、商户关系、会员关系中选择不同的ps.*” internal JOIN marketing\u effor

因为我对Rails的认识比SQL要新,所以我选择了一条捷径来构建一个相当复杂的(对我来说,无论如何)查询

好消息:我的查询正在运行

坏消息:我被黑客代码缠住了,不知道如何将动态变量放入其中(如果它是Rails友好的格式,这应该很容易)

以下是我的问题(为了便于阅读,将其分解):

ActiveRecord::Base.connection.select_all(“从商户、商品、销售、用户、用户、商户关系、会员关系中选择不同的ps.*”

internal JOIN marketing\u efforce me ON me.id=ps.marketing\u efforce\u id

LEFT-OUTER-JOIN-member\u-sales-ms-ON-me.id=ms.marketing\u-efforce\u-id

LEFT-OUTER-JOIN crm\u-sales-cs-ON-me.id=cs.marketing\u-efforce\u-id

其中((me.start<'2013-05-26'和me.end>'2013-05-26')或(me.start<'2013-05-26'和me.end为NULL))和(me.num_avail为NULL或me.num_avail>0)和(me.gender为NULL或me.gender=u.gender或u.gender为NULL)和((u.birthdate>me.birthdate_start和u.birthdateme.birthdate\u start和me.birthdate\u end为空)或(me.birthdate\u start为空,me.birthdate\u end为空)或(ms.member\u id=m.member\u id和m.user\u id=u.id)或ms.member\u id为空)和(cs.crm\u tier id=umr.crm\u tier\u id或cs.crm\u tier\u id为空)和u id=3和merch.id=1)

任何出现“2013-05-26”的地方,我都需要及时访问。现在。最后的u.id和merch.id也需要接受变量

我想我可以简单地做:.S=?…Q=?…L=?…,value,value,value),但这不起作用

更新

我在这里:

ProductSale.joins('INNER-JOIN-marketing\u-efforce\u-efforce.id=product\u-sales.marketing\u-efforce\u-id')。joins('LEFT-OUTER-JOIN-member\u-marketing\u-efforce\u-id=crm\u-sales.marketing\u-efforce\u-id')。joins('LEFT-OUTER-JOIN-crm\u-sales\u-marketing\u-efforce\u-id=crm\u

所以我负责所有的连接,但我遇到的问题是,使用原始SQL,我可以轻松定义需要访问的所有表…例如:

来自商户merch、产品销售ps、用户u、用户与商户关系umr、会员m

然而,我不知道如何使用Rails实现这一点。因此,我只是从产品销售部获得了

ProductSale加载(0.3ms)从“product\u sales”内部连接中选择“product\u sales”。*

例如,当我试图说,
users.id=1
时,我得到:

ActiveRecord::StatementInvalid:SQLite3::SQLException:没有这样的列:users.id:


有什么想法吗?谢谢。

也许不是最好的方法,但它有效地解决了主要问题(无法传递动态变量):

ProductSale.find_by_-sql[“QUE=?…R=?…Y=?”,value,value,value]

woaw,我觉得你是哥们:(.祝你好运。你可能想使用
.include()