On this page
class ActiveRecord::MismatchedForeignKey
Raised when a foreign key constraint cannot be added because the column type does not match the referenced column type.
Public Class Methods
new(adapter = nil, message: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil) Show source
# File activerecord/lib/active_record/errors.rb, line 120
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.strip_heredoc
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 message
msg << "\nOriginal message: #{message}"
end
super(msg)
end
Calls superclass method ActiveRecord::StatementInvalid.new
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.