代码之家  ›  专栏  ›  技术社区  ›  memical

rails3activerecord-for:生成了错误的sql

  •  0
  • memical  · 技术社区  · 15 年前

    我有以下两门课。

    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 回复  |  直到 15 年前
        1
  •  0
  •   memical    15 年前

    变化如此之大

    set_table_name "viewNewOrders"
    

    set_table_name "viewneworders"
    

    解决了这个问题。

    推荐文章