aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2012-12-09 17:01:03 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2012-12-10 00:01:41 -0300
commit95ccbd847da149b194cbf423e04e3d19a812dce4 (patch)
treef6dbbb9015c8125b853aaa7743b727b685dbc0b8
parent80735ff4c059d634e5eb3a83ce6a0bb8bda5cd8e (diff)
downloadrails-95ccbd847da149b194cbf423e04e3d19a812dce4.tar.gz
rails-95ccbd847da149b194cbf423e04e3d19a812dce4.tar.bz2
rails-95ccbd847da149b194cbf423e04e3d19a812dce4.zip
Add GeneratedAttribute#column_name to get the name of the column in the
database
-rw-r--r--railties/lib/rails/generators/generated_attribute.rb10
-rw-r--r--railties/lib/rails/generators/named_base.rb2
-rw-r--r--railties/lib/rails/generators/test_unit/model/templates/fixtures.yml4
-rw-r--r--railties/test/generators/generated_attribute_test.rb11
4 files changed, 19 insertions, 8 deletions
diff --git a/railties/lib/rails/generators/generated_attribute.rb b/railties/lib/rails/generators/generated_attribute.rb
index d8a4f15b4b..4ae8756ed0 100644
--- a/railties/lib/rails/generators/generated_attribute.rb
+++ b/railties/lib/rails/generators/generated_attribute.rb
@@ -99,13 +99,17 @@ module Rails
end
def index_name
- @index_name ||= if reference?
- polymorphic? ? %w(id type).map { |t| "#{name}_#{t}" } : "#{name}_id"
+ @index_name ||= if polymorphic?
+ %w(id type).map { |t| "#{name}_#{t}" }
else
- name
+ column_name
end
end
+ def column_name
+ @column_name ||= reference? ? "#{name}_id" : name
+ end
+
def foreign_key?
!!(name =~ /_id$/)
end
diff --git a/railties/lib/rails/generators/named_base.rb b/railties/lib/rails/generators/named_base.rb
index 25d3f5518f..9965db98de 100644
--- a/railties/lib/rails/generators/named_base.rb
+++ b/railties/lib/rails/generators/named_base.rb
@@ -162,7 +162,7 @@ module Rails
def attributes_names
@attributes_names ||= attributes.each_with_object([]) do |a, names|
- names << (a.reference? ? "#{a.name}_id" : a.name)
+ names << a.column_name
names << "#{a.name}_type" if a.polymorphic?
end
end
diff --git a/railties/lib/rails/generators/test_unit/model/templates/fixtures.yml b/railties/lib/rails/generators/test_unit/model/templates/fixtures.yml
index 7f29932ceb..b2bcaf63be 100644
--- a/railties/lib/rails/generators/test_unit/model/templates/fixtures.yml
+++ b/railties/lib/rails/generators/test_unit/model/templates/fixtures.yml
@@ -3,13 +3,13 @@
<% unless attributes.empty? -%>
one:
<% attributes.each do |attribute| -%>
- <%= attribute.reference? ? "#{attribute.name}_id" : attribute.name %>: <%= attribute.default %>
+ <%= attribute.column_name %>: <%= attribute.default %>
<%= "#{attribute.name}_type: #{attribute.human_name}" if attribute.polymorphic? %>
<% end -%>
two:
<% attributes.each do |attribute| -%>
- <%= attribute.reference? ? "#{attribute.name}_id" : attribute.name %>: <%= attribute.default %>
+ <%= attribute.column_name %>: <%= attribute.default %>
<%= "#{attribute.name}_type: #{attribute.human_name}" if attribute.polymorphic? %>
<% end -%>
<% else -%>
diff --git a/railties/test/generators/generated_attribute_test.rb b/railties/test/generators/generated_attribute_test.rb
index 6ab1cd58c7..d08e650b62 100644
--- a/railties/test/generators/generated_attribute_test.rb
+++ b/railties/test/generators/generated_attribute_test.rb
@@ -117,13 +117,13 @@ class GeneratedAttributeTest < Rails::Generators::TestCase
assert create_generated_attribute("#{attribute_type}{polymorphic}").polymorphic?
end
end
-
+
def test_polymorphic_reference_is_false
%w(foo bar baz).each do |attribute_type|
assert !create_generated_attribute("#{attribute_type}{polymorphic}").polymorphic?
end
end
-
+
def test_blank_type_defaults_to_string_raises_exception
assert_equal :string, create_generated_attribute(nil, 'title').type
assert_equal :string, create_generated_attribute("", 'title').type
@@ -132,6 +132,13 @@ class GeneratedAttributeTest < Rails::Generators::TestCase
def test_handles_index_names_for_references
assert_equal "post", create_generated_attribute('string', 'post').index_name
assert_equal "post_id", create_generated_attribute('references', 'post').index_name
+ assert_equal "post_id", create_generated_attribute('belongs_to', 'post').index_name
assert_equal ["post_id", "post_type"], create_generated_attribute('references{polymorphic}', 'post').index_name
end
+
+ def test_handles_index_names_for_references
+ assert_equal "post", create_generated_attribute('string', 'post').column_name
+ assert_equal "post_id", create_generated_attribute('references', 'post').column_name
+ assert_equal "post_id", create_generated_attribute('belongs_to', 'post').column_name
+ end
end