aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/fixture_set/model_metadata.rb
diff options
context:
space:
mode:
authorEileen M. Uchitelle <eileencodes@users.noreply.github.com>2018-10-07 07:57:26 -0500
committerGitHub <noreply@github.com>2018-10-07 07:57:26 -0500
commit651d8743a634837d47070503fde39e97df2e54d0 (patch)
treec4db90c7f197066101d766064e9fda87163d8f97 /activerecord/lib/active_record/fixture_set/model_metadata.rb
parentf8a3935ba17c5f99dafe8d9c92fd1de5936abca6 (diff)
parentcfeabbfdcbc27e78efd9e183ba74a2fc9a7a69a0 (diff)
downloadrails-651d8743a634837d47070503fde39e97df2e54d0.tar.gz
rails-651d8743a634837d47070503fde39e97df2e54d0.tar.bz2
rails-651d8743a634837d47070503fde39e97df2e54d0.zip
Merge pull request #34076 from gmcgibbon/fixtures_refactor
Fixtures refactor
Diffstat (limited to 'activerecord/lib/active_record/fixture_set/model_metadata.rb')
-rw-r--r--activerecord/lib/active_record/fixture_set/model_metadata.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/fixture_set/model_metadata.rb b/activerecord/lib/active_record/fixture_set/model_metadata.rb
new file mode 100644
index 0000000000..edc03939c8
--- /dev/null
+++ b/activerecord/lib/active_record/fixture_set/model_metadata.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module ActiveRecord
+ class FixtureSet
+ class ModelMetadata # :nodoc:
+ def initialize(model_class, table_name)
+ @model_class = model_class
+ @table_name = table_name
+ end
+
+ def primary_key_name
+ @primary_key_name ||= @model_class && @model_class.primary_key
+ end
+
+ def primary_key_type
+ @primary_key_type ||= @model_class && @model_class.type_for_attribute(@model_class.primary_key).type
+ end
+
+ def has_primary_key_column?
+ @has_primary_key_column ||= primary_key_name &&
+ @model_class.columns.any? { |col| col.name == primary_key_name }
+ end
+
+ def timestamp_column_names
+ @timestamp_column_names ||=
+ %w(created_at created_on updated_at updated_on) & column_names
+ end
+
+ def inheritance_column_name
+ @inheritance_column_name ||= @model_class && @model_class.inheritance_column
+ end
+
+ private
+
+ def column_names
+ @column_names ||= @model_class.connection.columns(@table_name).collect(&:name)
+ end
+ end
+ end
+end