Exception: ActiveRecord::MismatchedForeignKey
- Inherits:
-
StatementInvalid
- Object
- StandardError
- ActiveRecordError
- StatementInvalid
- ActiveRecord::MismatchedForeignKey
- Defined in:
- lib/active_record/errors.rb
Overview
Raised when a foreign key constraint cannot be added because the column type does not match the referenced column type.
Instance Method Summary collapse
-
#initialize(adapter = nil, message: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil) ⇒ MismatchedForeignKey
constructor
A new instance of MismatchedForeignKey.
Constructor Details
#initialize(adapter = nil, message: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil) ⇒ MismatchedForeignKey
Returns a new instance of MismatchedForeignKey.
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/active_record/errors.rb', line 118 def initialize(adapter = nil, message: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil) @adapter = adapter if table msg = <<-EOM.strip_heredoc Column `#{foreign_key}` on table `#{table}` has a type of `#{column_type(table, foreign_key)}`. This does not match column `#{primary_key}` on `#{target_table}`, which has type `#{column_type(target_table, primary_key)}`. To resolve this issue, change the type of the `#{foreign_key}` column on `#{table}` to be :integer. (For example `t.integer #{foreign_key}`). EOM else msg = <<-EOM There is a mismatch between the foreign key and primary key column types. Verify that the foreign key column type and the primary key of the associated table match types. EOM end if msg << "\nOriginal message: #{}" end super(msg) end |