2010-09-16 3 views
0

J'ai les 2 classes suivantes. Je ne peux pas toucher à la base de données pour changer le nom d'une table, d'une vue ou d'une colonne.rails 3 activeecord - pour: jointures mal sql est généré

Cela fonctionne parfaitement:

new_orders_last_2_weeks = 
NewOrder.where("orderdate >= :start and orderdate < :end", 
{:start => period_start, :end => period_end}) 

Cependant ceci:

new_orders_last_2_weeks = 
NewOrder.joins(:customer).where("orderdate >= :start and orderdate < :end", 
{:start => period_start, :end => period_end}) 

génère ce mauvais sql:

SELECT  `viewNewOrders`.* FROM  `viewNewOrders` INNER JOIN `customer` ON `customer`.`customerId` IS NULL WHERE  (orderdate >= '2010-09-02' and orderdate < '2010-09-16') 

Comment puis-je obtenir pour générer la bonne condition dans jointure interne ?

Merci.

Répondre

0

le problème était que ActiveRecord est sensible à la casse sur les noms de table et de champs.

changeant ainsi

set_table_name "viewNewOrders" 

à

set_table_name "viewneworders" 

résolu la question.