Exception: ActiveRecord::MismatchedForeignKey
- Inherits:
-
StatementInvalid
- Object
- StandardError
- ActiveRecordError
- StatementInvalid
- ActiveRecord::MismatchedForeignKey
- Defined in:
- activerecord/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 Attribute Summary
Attributes inherited from StatementInvalid
Instance Method Summary collapse
-
#initialize(message: nil, sql: nil, binds: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil, primary_key_column: nil) ⇒ MismatchedForeignKey
constructor
A new instance of MismatchedForeignKey.
Constructor Details
#initialize(message: nil, sql: nil, binds: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil, primary_key_column: nil) ⇒ MismatchedForeignKey
Returns a new instance of MismatchedForeignKey.
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'activerecord/lib/active_record/errors.rb', line 133 def initialize( message: nil, sql: nil, binds: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil, primary_key_column: nil ) if table type = primary_key_column.bigint? ? :bigint : primary_key_column.type msg = <<~EOM.squish Column `#{foreign_key}` on table `#{table}` does not match column `#{primary_key}` on `#{target_table}`, which has type `#{primary_key_column.sql_type}`. To resolve this issue, change the type of the `#{foreign_key}` column on `#{table}` to be :#{type}. (For example `t.#{type} :#{foreign_key}`). EOM else msg = <<~EOM.squish 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, sql: sql, binds: binds) end |