Path: | lib/sequel/extensions/duplicate_columns_handler.rb |
Last Update: | Sun Oct 02 21:06:53 +0000 2016 |
frozen-string-literal: true
The duplicate_columns_handler extension allows you to customize handling of duplicate column names in your queries on a per-database or per-dataset level.
For example, you may want to raise an exception if you join 2 tables together which contains a column that will override another columns.
To use the extension, you need to load the extension into the database:
DB.extension :duplicate_columns_handler
A database option is introduced: :on_duplicate_columns. It accepts a Symbol or any object that responds to :call.
:on_duplicate_columns => :raise :on_duplicate_columns => :warn :on_duplicate_columns => :ignore :on_duplicate_columns => proc { |columns| arbitrary_condition? ? :raise : :warn }
You may also configure duplicate columns handling for a specific dataset:
ds.on_duplicate_columns(:warn) ds.on_duplicate_columns(:raise) ds.on_duplicate_columns(:ignore) ds.on_duplicate_columns { |columns| arbitrary_condition? ? :raise : :warn } ds.on_duplicate_columns(proc { |columns| arbitrary_condition? ? :raise : :warn })
If :raise is specified, a Sequel::DuplicateColumnError is raised. If :warn is specified, you will receive a warning via `warn`. If a callable is specified, it will be called. If no on_duplicate_columns is specified, the default is :warn.
Related module: Sequel::DuplicateColumnsHandler