2010-07-10 7 views
1

Je suis un nouveau gars en Ruby, et je tables avec ces clés primaires:Ruby On Rails plusieurs clés primaires composites question

  1. transaction_types:
    • TRANSACTION_TYPE
  2. transaction_headers:
    • TRANSACTION_TYPE
    • transaction_year
    • transaction_id
  3. transaction_details:
    • TRANSACTION_TYPE
    • transaction_year
    • transaction_id
    • CITY_ID
    • ticker_id
  4. téléscripteurs:
    • CITY_ID
    • ticker_id

Bien sûr, ces modèles ont d'autres clés non primaires telles que customer_id, connection_id ou la date, ou user_id, etc, mais ceux-ci ne sont pas importants pour les relations, car ceux-ci sont simplement données ou je n'ai aucun problème avec ceux-ci.

Ce sont mes modèles:

#models 

class transaction_type < ActiveRecord::Base 
    has_many :transaction_headers, :foreign_key=>'transaction_type' 
    has_many :transaction_details, :foreign_key=>'transaction_type' 
    has_many :tickers, :through=>:transaction_details 
end 

class transaction_header < ActiveRecord::Base 
    belongs_to: transaction_types, :foreign_key=>'transaction_type' 
    has_many :transaction_details 
    has_many :tickers, :through=>:transaction_details 
end 

class transaction_detail < ActiveRecord::Base 
    belongs_to: transaction_headers 
    has_many :tickers 
end 

class ticker < ActiveRecord::Base 

end 

je dois effectuer une relation entre corresponds clés primaires .. Il était facile pour TRANSACTION_TYPE à transaction_detail et transaction_header, mais comment puis-je créer une association entre transaction_header et transaction_detail, ainsi qu'entre transaction_detail et ticker? Comment créer les: à travers les touches pour tickers relations?

Merci

Répondre

4

ActiveRecord ne supporte pas les clés primaires composites hors de la boîte, mais ce plugin devrait aller:

http://compositekeys.rubyforge.org/

Ils ont un bon guide sur la façon de commencer.

Espérons que cela aide!