【发布时间】:2010-09-16 20:42:38
【问题描述】:
我有以下两个课程。
class Customer < ActiveRecord::Base
set_table_name "customer"
set_primary_key "customerId"
has_many :new_orders, :foreign_key => "customerid", :primary_key => "customerId", :class_name => "NewOrder"
end
class NewOrder < ActiveRecord::Base
set_table_name "viewNewOrders"
set_primary_key "orderid"
belongs_to :customer, :foreign_key => "customerid", :primary_key => "customerId"
end
我无法通过触摸数据库来更改任何表、视图或列名。
这很好用:
new_orders_last_2_weeks =
NewOrder.where("orderdate >= :start and orderdate < :end",
{:start => period_start, :end => period_end})
但是:
new_orders_last_2_weeks =
NewOrder.joins(:customer).where("orderdate >= :start and orderdate < :end",
{:start => period_start, :end => period_end})
生成这个错误的 sql:
SELECT `viewNewOrders`.* FROM `viewNewOrders` INNER JOIN `customer` ON `customer`.`customerId` IS NULL WHERE (orderdate >= '2010-09-02' and orderdate < '2010-09-16')
如何让它在内部连接中生成正确的条件?
谢谢。
【问题讨论】:
标签: mysql activerecord ruby-on-rails-3 join