【发布时间】:2011-11-01 07:56:37
【问题描述】:
产品限时在网站上销售。
每次销售以DATE 开始,以DATE 结束,并且包含至少一种产品。
每个产品都与它所属的销售的 id# 相关联。
有时销售中没有产品的时间很短,因为经理创建了销售但尚未完成将产品与销售相关联,所以我必须在显示列表时过滤掉没有产品的销售即将到来的销售,否则会使用户感到困惑。
在我的Sale 模型中,我想出了这个,因为我对 ActiveRecord 不太熟悉:
def upcoming_sales
find_by_sql(["SELECT DISTINCT sales.* from sales, products WHERE products.sale_id = sales.id AND sales.start_at > ? AND sales.start_at < ? ORDER BY sales.start_at ASC", Time.now, (Time.now + END_AT)])
end
我相信上面的 SQL 是标准的 ANSI SQL,应该可以在几乎任何数据库服务器上运行,但它可以用 ActiveRecord 代替吗?
除了使它对非 SQL 用户友好之外,用 ActiveRecord 重做它有什么好处吗?
在性能方面,哪种方式更好?
【问题讨论】:
标签: sql ruby-on-rails ruby activerecord