class Clear::Model::Column(T, C)

Overview

A column of a Model Provide some methods like:

which is not gathered through the query system (uninitialized column).
Or use the `get_def` to get with default value

Included Modules

Defined in:

clear/model/column.cr

Constant Summary

UNKNOWN = UnknownClass.new

Constructors

Instance Method Summary

Instance methods inherited from module Clear::ErrorMessages

build_error_message(message : String, ways_to_resolve : Tuple | Array = Tuple.new, manual_pages : Tuple | Array = Tuple.new) build_error_message, converter_error(from, to) converter_error, format_width(x, w = 80) format_width, illegal_setter_access_to_undefined_column(name) illegal_setter_access_to_undefined_column, lack_of_primary_key(model_name) lack_of_primary_key, migration_already_down(number) migration_already_down, migration_already_up(number) migration_already_up, migration_drop_irreversible(name) migration_drop_irreversible, migration_irreversible(name = nil, operation = nil) migration_irreversible, migration_not_found(number) migration_not_found, migration_not_unique(numbers) migration_not_unique, no_migration_yet(version) no_migration_yet, null_column_mapping_error(name, type) null_column_mapping_error, order_by_error_invalid_order(current_order) order_by_error_invalid_order, polymorphic_nil(through) polymorphic_nil, polymorphic_unknown_class(class_name) polymorphic_unknown_class, query_building_error(message) query_building_error, uid_not_found(class_name) uid_not_found, uninitialized_db_connection(connection) uninitialized_db_connection

Constructor Detail

def self.new(name : String, value : T | UnknownClass = UNKNOWN, has_db_default = false) #

[View source]

Instance Method Detail

def changed? : Bool #

[View source]
def clear #

Completely clear the column, remove both #value and #old_value and turning the column in a non-defined state.


[View source]
def clear_change_flag #

Reset #changed? flag to false. See Column(T)#dirty! for the counter part.


[View source]
def defined? #

Check whether the column is defined or not.


[View source]
def dirty! #

Reset #changed? flag to true. See Column(T)#clear_change_flag for the counter part.


[View source]
def has_db_default? : Bool #

[View source]
def inspect #

Inspect this column. If a column is not loaded (e.g. not defined once), it will show "#undef". If a column is dirty (e.g. change hasn't be saved), it will show a "*" after the value.


[View source]
def name : String #

[View source]
def nilable? #

Return true if the value is an union of a Type with Nilable, false otherwise.


[View source]
def old_value : T | UnknownClass #

[View source]
def reset(x : T?) #

Reset the current field. Restore the #old_value state to current value. Reset the flag changed to false.


[View source]
def reset_convert(x) #

[View source]
def revert #

If the column is dirty (e.g the value has been changed), return to the previous state.


[View source]
def set(x : T?) #

[View source]
def set_convert(x) #

[View source]
def to_sql_value(default = nil) : Clear::SQL::Any #

Return the database converted value using the converter


[View source]
def value : T #

Returns the current value of this column. If the value has never been initialized, throw an exception


[View source]
def value(default : X) : T | X forall X #

Returns the current value of this column or default if the value is undefined.


[View source]
def value=(x : T) #

Set the value of the column to the value x. If x is not equal to the old value, then the column #changed? flag is set to true.


[View source]