2010-12-06 1 views
0
class CashOrderStatus < ActiveRecord::Base 
    belongs_to:cash_order 
end 

in der Regel die DB eine Tabelle cash_order_statuses dieses Modell abzubilden, aber jetzt will ichSchienen, wie ein Modell benötigen einen virtuellen Blick auf die Abbildung

Abbildung dieses Modell zu einem bestimmten SQL-Ansicht wie

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

nicht bieten Schienen in gewisser Weise diese

Antwort

0

Es zu erreichen, sind mehrere Möglichkeiten, um Ihre Anforderung zu erfüllen:

  1. In Ihrem CashOrderStatus Modell können Sie Tabellennamen festlegen Standard ORM-Mapping außer Kraft zu setzen:
class CashOrderStatus > ActiveRecord::Base 
    set_table_name "order_statuses" 

    belongs_to:cash_order 
end 
  1. Sie können implementieren STI (Single Table Inheritance) -Funktionalität, wo in Ihrer Datenbank-Tabelle "order_statuses" ein mehr Spalte wird dort sein: Typ, die den abgeleiteten Modellklassennamen enthalten wird (In diesem Fall CashOrderStatus).

Also Ihr Modell wird wie folgt aussehen:

class CashOrderStatus > OrderStatus 
    set_table_name "order_statuses" 

    belongs_to:cash_order 
end 

Und OrderStaus Modell wird von AR :: Base-Klasse abgeleitet werden. Versuch es.

HINWEIS: Entschuldigung für die Klassenvererbung. Es sollte < anstelle von > sein. Es gibt ein Formatierungsproblem in meinem Stackoverflow-Konto, also setze ich folgendes :-)