diff options
author | Eileen M. Uchitelle <eileencodes@users.noreply.github.com> | 2018-10-07 07:57:26 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-07 07:57:26 -0500 |
commit | 651d8743a634837d47070503fde39e97df2e54d0 (patch) | |
tree | c4db90c7f197066101d766064e9fda87163d8f97 /activerecord/lib/active_record/fixture_set/model_metadata.rb | |
parent | f8a3935ba17c5f99dafe8d9c92fd1de5936abca6 (diff) | |
parent | cfeabbfdcbc27e78efd9e183ba74a2fc9a7a69a0 (diff) | |
download | rails-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.rb | 40 |
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 |