Clear::Reflection::Column
Inherits Clear::Model::Relations::HasManyThroughMacro < Clear::Model::Relations::HasManyMacro < Clear::Model::Relations::HasOneMacro < Clear::Model::Relations::BelongsToMacro < Clear::Model < Clear::Model::FullTextSearchable < Clear::Model::JSONDeserialize < Clear::Model::Initializer < Clear::Model::HasFactory < Clear::Model::ClassMethods < Clear::Model::HasScope < Clear::Model::HasRelations < Clear::Model::HasValidation < Clear::Validation::Helper < Clear::Model::HasSaving < Clear::Model::HasSerialPkey < Clear::Model::HasTimestamps < Clear::Model::HasColumns < Clear::Model::HasHooks < Clear::Model::Connection < Clear::ErrorMessages < Reference < Object
Reflection of the columns using information_schema in postgreSQL.
Constants
Constructors
Build and new model and save it. Returns the model.
The model may not be saved due to validation failure;
check the returned model errors? and persisted? flags.
Build and new model and save it. Returns the model.
Returns the newly inserted model Raises an exception if validation failed during the saving process.
Class methods
Build a new empty model and fill the columns using the NamedTuple in argument.
Returns the new model
Define on which connection the model is living. Useful in case of models living in different databases.
Is set to "default" by default.
See Clear::SQL#init(URI, *opts) for more information about multi-connections.
Example:
Clear::SQL.init("postgres://postgres@localhost/database_1", connection_pool_size: 5)
Clear::SQL.init("secondary", "postgres://postgres@localhost/database_2", connection_pool_size: 5)
class ModelA
include Clear::Model
# Performs all the queries on `database_1`
# self.connection = "default"
column id : Int32, primary: true, presence: false
column title : String
end
class ModelB
include Clear::Model
# Performs all the queries on `database_2`
self.connection = "secondary"
column id : Int32, primary: true, presence: false
end
Define on which connection the model is living. Useful in case of models living in different databases.
Is set to "default" by default.
See Clear::SQL#init(URI, *opts) for more information about multi-connections.
Example:
Clear::SQL.init("postgres://postgres@localhost/database_1", connection_pool_size: 5)
Clear::SQL.init("secondary", "postgres://postgres@localhost/database_2", connection_pool_size: 5)
class ModelA
include Clear::Model
# Performs all the queries on `database_1`
# self.connection = "default"
column id : Int32, primary: true, presence: false
column title : String
end
class ModelB
include Clear::Model
# Performs all the queries on `database_2`
self.connection = "secondary"
column id : Int32, primary: true, presence: false
end
Multi-models creation. See Collection#create(**args)
Returns the list of newly created model.
Each model will call an INSERT query.
You may want to use Collection#import to insert multiple model more efficiently in one query.
Multi-models creation. See Collection#create!(**args)
Returns the list of newly created model. Raises exception if any of the model has validation error.
Create a new model from json and save it. Returns the model.
The model may not be saved due to validation failure;
check the returned model errors? and persisted? flags.
Trusted flag set to true will allow mass assignment without protection, FALSE by default
Create a new model from json and save it. Returns the model.
Returns the newly inserted model Raises an exception if validation failed during the saving process. Trusted flag set to true will allow mass assignment without protection, FALSE by default
Create a new empty model and fill the columns from json. Returns the new model
Trusted flag set to true will allow mass assignment without protection, FALSE by default
returns the fully qualified and escaped name for this table. add schema if schema is different from 'public' (default schema)
ex: "schema"."table"
Import a bulk of models in one SQL insert query. Each model must be non-persisted.
on_conflict callback can be optionnaly turned on
to manage constraints of the database.
Note: Old models are not modified. This method return a copy of the models as saved in the database.
Example:
users = [User.new(id: 1), User.new(id: 2), User.new(id: 3)]
users = User.import(users)
Define the current schema used in PostgreSQL. The value is nil by default, which lead to non-specified
schema during the querying, and usage of "public" by PostgreSQL.
This property can be redefined on initialization. Example:
class MyModel
include Clear::Model
self.schema = "my_schema"
end
MyModel.query.to_sql # SELECT * FROM "my_schema"."my_models"
Define the current schema used in PostgreSQL. The value is nil by default, which lead to non-specified
schema during the querying, and usage of "public" by PostgreSQL.
This property can be redefined on initialization. Example:
class MyModel
include Clear::Model
self.schema = "my_schema"
end
MyModel.query.to_sql # SELECT * FROM "my_schema"."my_models"
Return the table name setup for this model. By convention, the class name is by default equals to the pluralized underscored string form of the model name. Example:
MyModel => "my_models"
Person => "people"
Project::Info => "project_infos"
The property can be updated at initialization to a custom table name:
class MyModel
include Clear::Model
self.table = "another_table_name"
end
MyModel.query.to_sql # SELECT * FROM "another_table_name"
Return the table name setup for this model. By convention, the class name is by default equals to the pluralized underscored string form of the model name. Example:
MyModel => "my_models"
Person => "people"
Project::Info => "project_infos"
The property can be updated at initialization to a custom table name:
class MyModel
include Clear::Model
self.table = "another_table_name"
end
MyModel.query.to_sql # SELECT * FROM "another_table_name"
Instance methods
Attributes, used when fetch_columns is true
Return true if the model is dirty (e.g. one or more fields
have been changed.). Return false otherwise.
Reset the changed? flag on all columns
The model behave like its not dirty anymore and call to save would apply no changes.
Returns self
Returns the value of column_name column or throw an exception if the column is not defined.
Setter for column_name column.
Returns the column object used to manage column_name field
See Clear::Model::Column
Invalidate local-to-relation cache and eager-loading cache. Useful to forcefully query again when calling relation defined method
Set the columns from hash
Set the model fields from hash
reset flavors
Set the columns from hash
Set the model fields from hash
Set one or multiple columns to a specific value This two are equivalents:
model.set(a: 1)
model.a = 1
Set the fields from json passed as argument Trusted flag set to true will allow mass assignment without protection, FALSE by default
The method table is a belongs_to relation
to Clear::Reflection::Table
Returns the value of table_catalog column or throw an exception if the column is not defined.
Setter for table_catalog column.
Returns the column object used to manage table_catalog field
See Clear::Model::Column
Returns the value of table_name column or throw an exception if the column is not defined.
Setter for table_name column.
Returns the column object used to manage table_name field
See Clear::Model::Column
Returns the value of table_schema column or throw an exception if the column is not defined.
Setter for table_schema column.
Returns the column object used to manage table_schema field
See Clear::Model::Column
Return a hash version of the columns of this model.
Set the fields from json passed as argument and call save on the object
Trusted flag set to true will allow mass assignment without protection, FALSE by default
Set the fields from json passed as argument and call save! on the object
Trusted flag set to true will allow mass assignment without protection, FALSE by default
Generate the hash for update request (like during save)
For each column, ensure than when needed the column has present information into it.
This method is called on validation.