Commit 8bfeeb25 by Gary S. Weaver

adding support for composite_primary_keys

parent 4a96f3a1
...@@ -113,7 +113,7 @@ module AnnotateModels ...@@ -113,7 +113,7 @@ module AnnotateModels
attrs = [] attrs = []
attrs << "default(#{quote(col.default)})" unless col.default.nil? attrs << "default(#{quote(col.default)})" unless col.default.nil?
attrs << "not null" unless col.null attrs << "not null" unless col.null
attrs << "primary key" if klass.primary_key && col.name.to_sym == klass.primary_key.to_sym attrs << "primary key" if klass.primary_key && (klass.primary_key.is_a?(Array) ? klass.primary_key.collect{|c|c.to_sym}.include?(col.name.to_sym) : col.name.to_sym == klass.primary_key.to_sym)
col_type = (col.type || col.sql_type).to_s col_type = (col.type || col.sql_type).to_s
if col_type == "decimal" if col_type == "decimal"
......
...@@ -73,6 +73,25 @@ EOS ...@@ -73,6 +73,25 @@ EOS
EOS EOS
end end
it "should get schema info even if the primary key is array, if using composite_primary_keys" do
klass = mock_class(:users, nil, [
[mock_column(:a_id, :integer), mock_column(:b_id, :integer)],
mock_column(:name, :string, :limit => 50)
])
AnnotateModels.get_schema_info(klass, "Schema Info").should eql(<<-EOS)
# Schema Info
#
# Table name: users
#
# a_id :integer not null
# b_id :integer not null
# name :string(50) not null
#
EOS
end
it "should get schema info as RDoc" do it "should get schema info as RDoc" do
klass = mock_class(:users, :id, [ klass = mock_class(:users, :id, [
mock_column(:id, :integer), mock_column(:id, :integer),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment