J'écris une interface web relativement simple pour la base de données de facturation/client/contrat. Je voudrais avoir la structure suivante pour mes modèles:Complexe joint avec les tables héritées dans Rails
class Invoice < ActiveRecord::Base
set_table_name 't10_invoices'
set_primary_key 'id_invoice'
has_one :client
end
class Client < ActiveRecord::Base
set_table_name 't20_clients'
set_primary_key 'id_client'
has_many :invoices
end
Le problème est que j'ai la structure de base de données suivante:
Tables:
t10_invoices:
id_invoice - primary_key
id_contract - foreign_key
t12_contracts:
id_contract - primary_key
t15_contracts_clients
id_client - foreign_key
id_contract - foreign_key
t20_clients
id_client - primary_key
Il y a 1-1 relation entre t20_clients
et t12_contracts
par t15_contracts_clients
et il existe une relation 1-n entre t20_clients
et t10_invoices
. Quelle est la différence entre :foreign_key
et :association_foreign_key
? Le problème est que je ne peux pas modifier la structure de la base de données et je suis tout à fait perdu dans la redéfinition des noms de tables, des clés étrangères, join_foreign_keys etc ... Je voudrais un moyen simple de trouver des clients de facture dans normal Rails way Invoice.find(:first).client
J'apprécierais toute suggestion et aide.
Oui, je pensais à la création de vues mais je préférerais tout faire dans les rails - donc ce sera beaucoup plus flexible au lieu d'avoir demandé au DBA de créer des vues. –
Je vois. Dans mon équipe, nous maintenons également la base de données, donc je préfère toujours éliminer les incohérences de base de données en utilisant des vues et garder la logique de mon application aussi propre que possible. Utile également si vous avez l'occasion de réécrire correctement le schéma de base de données. Toutefois, les vues n'étant généralement pas modifiables, il faut garder cela à l'esprit. –