远古达拉然传送门绝版:(ruby)多主键

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 20:41:46

(ruby)多主键(复合键)的麻烦 

最近使用了RAKE来进行数据库的迁移,ruby的ActiveRecord是只支持单主键表,对于复合键表的迁移就很麻烦。
假设a1表就一个sid主键,那么它的保存是如下的:

view plaincopy to clipboardprint?
  1. class Init< ActiveRecord::Migration  
  2.       class A1< ActiveRecord::Base  
  3.           set_table_name "a1"  
  4.            set_primary_key :sid  
  5.       end     
  6.     
  7.      def self.up  
  8.            a1=A1.new  
  9.            a1.pid='2112'  
  10.            a1.sid='111'  
  11.            a1.name='aaa'  
  12.            a1.save!  
  13.      end  
  14. end  

但是当pid也是主键的时候就麻烦了,保存会出现主键约束的问题,g了大半天发现ruby里有个项目Composite Primary Keys 专门是用来补充 ActiveRecords的,D下来,GEM上,再来就可以使用了
假设sid,pid是复合键,那么保存语句就只要改红色的地方就行了

view plaincopy to clipboardprint?
  1. require 'composite_primary_keys'#引入这个包  
  2. class Init< ActiveRecord::Migration  
  3.       class A1< ActiveRecord::Base  
  4.           set_table_name "a1"  
  5.           set_primary_keys :sid,:pid#key变keys  
  6.       end     
  7.     
  8.      def self.up  
  9.            a1=A1.new  
  10.            a1.pid='2112'  
  11.            a1.sid='111'  
  12.            a1.name='aaa'  
  13.            a1.save!  
  14.      end  
  15. end  

相应资料:http://rubyforge.org/projects/compositekeys