Supongamos el siguiente esquema de datos:¿Es posible tener una llave foránea compuesta en los rieles?
Usage
======
client_id
resource
type
amount
Billing
======
client_id
usage_resource
usage_type
rate
En este ejemplo, supongamos que tengo múltiples recursos, cada uno de los cuales se pueden utilizar de muchas maneras. Por ejemplo, un recurso es un widget
. Widgets
puede ser foo
ed y pueden ser bar
ed. Gizmo
s también pueden ser foo
ed y bar
ed. Estos tipos de uso se facturan a diferentes tasas, posiblemente incluso tarifas diferentes para diferentes clientes. Cada ocurrencia de un uso (de un recurso) se registra en la tabla de Uso. Cada tasa de facturación (para combinación de cliente, recurso y tipo) se almacena en la tabla de facturación.
(Por cierto, si este esquema de datos no es la forma correcta de acercarse a este problema, por favor, hacer sugerencias.)
¿Es posible, usando Ruby on Rails y ActiveRecord, para crear una relación has_many
de Billings a Usages para que pueda obtener una lista de instancias de uso para una tasa de facturación determinada ¿Hay una sintaxis del has_many, :through
que no sepa?
Una vez más, se puede abordar este problema desde el ángulo equivocado, por lo que si se puede pensar en una mejor manera, por favor, ¡habla!
espera un segundo ... ¿No debería ser la otra a su alrededor - una clave principal en la facturación y una clave externa en el uso? – Yarik
Buena respuesta, buen fondo. La vista de RoR de las bases de datos me parece problemática. Pero el DBMS parece haber exigido su venganza al sobrecargar a RoR con una reputación de ser un cerdo de base de datos lento e incalculable. – dkretz