rails如何将虚拟视图映射到模型

时间:2010-12-06 05:46:26

标签: ruby-on-rails ruby-on-rails-3

class CashOrderStatus < ActiveRecord::Base
  belongs_to:cash_order
end

通常db需要一个表cash_order_statuses来映射这个模型,但现在我想

将此模型映射到特定的sql视图,如

select * from order_statues where cash_order_id is not null <=> CashOrderStatus 

rails是否提供了实现此目的的一些方法

1 个答案:

答案 0 :(得分:0)

有多种方法可以满足您的要求:

  1. 在CashOrderStatus模型中,您可以设置表名以覆盖默认的ORM映射:
  2. class CashOrderStatus > ActiveRecord::Base
      set_table_name "order_statuses"
    
      belongs_to:cash_order
    end
    
    1. 您可以实现STI(单表继承)功能,在数据库表“order_statuses”中还有一列:类型,它将保存派生的模型类名称(在本例中,<强> CashOrderStatus )。
    2. 所以你的模型看起来像这样:

      class CashOrderStatus > OrderStatus
        set_table_name "order_statuses"
      
        belongs_to:cash_order
      end
      

      OrderStaus模型将从AR :: Base类派生。试试吧。

      注意:对于类继承表示法,很抱歉。它应该是&lt; 而不是&gt; 。我的stackoverflow帐户中存在格式问题,所以我这样说: - )