當無法加入外鍵約束因為欄位類型不符參考的欄位類型時產生。
方法
類別公共方法
new( message: nil, sql: nil, binds: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil, primary_key_column: nil, query_parser: nil, connection_pool: nil ) 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/errors.rb, line 239 def initialize( message: nil, sql: nil, binds: nil, table: nil, foreign_key: nil, target_table: nil, primary_key: nil, primary_key_column: nil, query_parser: nil, connection_pool: nil ) @original_message = message @query_parser = query_parser 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, connection_pool: connection_pool) end
實例公共方法
set_query(sql, binds) 連結
來源:顯示 | 在 GitHub 上
# File activerecord/lib/active_record/errors.rb, line 275 def set_query(sql, binds) if @query_parser && !@sql self.class.new( message: @original_message, sql: sql, binds: binds, connection_pool: @connection_pool, **@query_parser.call(sql) ).tap do |exception| exception.set_backtrace backtrace end else super end end