class method
self.new
Ruby on Rails 6.1.7.10
Since v5.2.8.1Signature
self.new( message: nil, sql: nil, binds: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil, primary_key_column: nil )
No documentation comment.
Parameters
-
messagekey = nil -
sqlkey = nil -
bindskey = nil -
tablekey = nil -
foreign_keykey = nil -
target_tablekey = nil -
primary_keykey = nil -
primary_key_columnkey = nil
Source
# File activerecord/lib/active_record/errors.rb, line 150
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 message
msg << "\nOriginal message: #{message}"
end
super(msg, sql: sql, binds: binds)
end
Defined in activerecord/lib/active_record/errors.rb line 150
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::MismatchedForeignKey