method
new
v7.1.3.2 -
Show latest stable
-
0 notes -
Class: PrimaryKeyError
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.0
- 6.1.3.1
- 6.1.7.7
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
new(label, association, value)
public
Hide source
# File activerecord/lib/active_record/fixture_set/table_row.rb, line 43 def initialize(label, association, value) super(<<~MSG) Unable to set #{association.name} to #{value} because the association has a custom primary key (#{association.join_primary_key}) that does not match the associated table's primary key (#{association.klass.primary_key}). To fix this, change your fixture from #{label}: #{association.name}: #{value} to #{label}: #{association.foreign_key}: **value** where **value** is the #{association.join_primary_key} value for the associated #{association.klass.name} record. MSG end end def initialize(fixture, table_rows:, label:, now:) @table_rows = table_rows @label = label @now = now @row = fixture.to_hash fill_row_model_attributes end def to_hash @row end private def model_metadata @table_rows.model_metadata end def model_class @table_rows.model_class end def fill_row_model_attributes return unless model_class fill_timestamps interpolate_label model_class.composite_primary_key? ? generate_composite_primary_key : generate_primary_key resolve_enums resolve_sti_reflections end def reflection_class @reflection_class ||= if @row.include?(model_metadata.inheritance_column_name) @row[model_metadata.inheritance_column_name].constantize rescue model_class else model_class end end def fill_timestamps # fill in timestamp columns if they aren't specified and the model is set to record_timestamps if model_class.record_timestamps model_metadata.timestamp_column_names.each do |c_name| @row[c_name] = @now unless @row.key?(c_name) end end end