rails 3 activerecord - для: присоединяется неправильно генерируется sql - PullRequest
0 голосов
/ 17 сентября 2010

У меня есть следующие 2 класса.

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')

Как я могу получить его для генерации правильного условия во внутреннем соединении?

Спасибо.

1 Ответ

0 голосов
/ 21 сентября 2010

проблема была в том, что ActiveRecord чувствителен к регистру имен таблиц и полей.

так меняется

set_table_name "viewNewOrders"

до

set_table_name "viewneworders"

решил проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...