我试图组合一系列的类,可以使用ActiveRecord动态地创建和执行复杂查询。我对这个做法感到非常舒适:
MyModel.select("id, name, floober").join(:creator).where(:is_active => true)
我在使用这些东西构建查询时遇到了困难,因为我无法确定每个可能的方法(连接数、where子句数、限制、组等)将有多少个,事先是无法确定的。有时候调用它时需要2个连接,有时不需要。
由于我获取这些内容的方式的特殊性--一个连接列表,一个列列表,一个where子句列表等,我可以盲目地将它们链接在一起。我必须将列连接在一起,排列连接,链接where子句,所以我不能循环遍历各种列表。
我试过的一件事是将Ruby语句构建为字符串,然后在最后评估它,但完成后感觉很肮脏,就像需要洗个澡一样。我正在寻找一种方式来缓存我的查询状态,直到所有部分都累积完毕,然后再执行它们。
我走"off the Rails"了吗?
提前感谢...