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

habituellement db ont besoin d'un cash_order_statuses de table pour la cartographie de ce modèle, mais maintenant je veuxrails comment cartographier une vue virtuelle à un modèle

cartographie ce modèle à une vue sql spécifique comme

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

ne rails fournissent un moyen d'y parvenir

Répondre

0

Il y a plusieurs façons de répondre à vos besoins:

  1. Dans votre modèle CashOrderStatus, vous pouvez définir le nom de la table pour remplacer mappage par défaut ORM:
class CashOrderStatus > ActiveRecord::Base 
    set_table_name "order_statuses" 

    belongs_to:cash_order 
end 
  1. Vous pouvez implémenter ITS (héritage de table unique) fonctionnalité où dans votre base de données "order_statuses" un plus colonne sera là: type qui tiendra le nom de la classe du modèle dérivé (Dans ce cas, CashOrderStatus).

donc votre modèle ressemblera à ceci:

class CashOrderStatus > OrderStatus 
    set_table_name "order_statuses" 

    belongs_to:cash_order 
end 

Et le modèle OrderStaus sera dérivé de AR :: classe de base. Essayez-le.

REMARQUE: Désolé pour la notation d'héritage de classe. Il devrait être < au lieu de >. Il y a un problème de formatage dans mon compte stackoverflow, donc j'ai mis comme ceci :-)