class PlaceOS::Model::Survey::Question

Included Modules

Defined in:

placeos-models/survey/question.cr

Constant Summary

CALLBACKS = {before_save: [] of Nil, after_save: [] of Nil, before_create: [do self.created_at = self.updated_at = Time.utc end] of Nil, after_create: [] of Nil, before_update: [do self.updated_at = Time.utc end] of Nil, after_update: [] of Nil, before_destroy: [:destroy_answers] of Nil, after_destroy: [] of Nil}
Log = ::Log.for(self)

Constructors

Class Method Summary

Macro Summary

Instance Method Summary

Instance methods inherited from module PlaceOS::Model::Associations

format_list_for_postgres(list : Enumerable(String)) : String format_list_for_postgres, reset_associations reset_associations

Class methods inherited from module PlaceOS::Model::Associations

format_list_for_postgres(list : Enumerable(String)) : String format_list_for_postgres

Macros inherited from module PlaceOS::Model::Associations

belongs_to(parent_class, dependent = :none, association_name = nil, foreign_key = nil, presence = false, pk_type = nil, serialize = true) belongs_to, has_many(child_class, collection_name = nil, dependent = :none, foreign_key = nil, serialize = false) has_many, has_one(child_class, dependent = :none, association_name = nil, presence = false) has_one

Instance methods inherited from class PlaceOS::Model::ModelWithAutoKey

after_create after_create, after_destroy after_destroy, after_save after_save, after_update after_update, apply_defaults apply_defaults, assign_attributes(params : HTTP::Params | Hash(String, String) | Tuple(String, String))
assign_attributes(model : PlaceOS::Model::ModelWithAutoKey)
assign_attributes
assign_attributes
, attributes attributes, attributes_tuple attributes_tuple, before_create before_create, before_destroy before_destroy, before_save before_save, before_update before_update, invoke_props invoke_props, persistent_attributes persistent_attributes, run_create_callbacks(&) run_create_callbacks, run_destroy_callbacks(&) run_destroy_callbacks, run_save_callbacks(&) run_save_callbacks, run_update_callbacks(&) run_update_callbacks

Constructor methods inherited from class PlaceOS::Model::ModelWithAutoKey

new(ctx : YAML::ParseContext, node : YAML::Nodes::Node)
new(pull : JSON::PullParser)
new(rs : DB::ResultSet)
new

Class methods inherited from class PlaceOS::Model::ModelWithAutoKey

attributes : Array(Symbol) attributes, auto_generate_id : Bool auto_generate_id, from_rs(rs : DB::ResultSet) from_rs, primary_key : Symbol primary_key

Constructor Detail

def self.from_json(string_or_io : String | IO, trusted : Bool = false) : self #

def self.from_json(string_or_io : String | IO, root : String, trusted : Bool = false) : self #

Deserializes the given JSON in string_or_io into an instance of self, assuming the JSON consists of an JSON object with key root, and whose value is the value to deserialize. Will not deserialise from fields with mass_assign: false

class User < ActiveModel::Model
  attribute name : String
  attribute google_id : UUID, mass_assign: false
end

User.from_json(%({"main": {"name": "Jason", "google_id": "f6f70bfb-c882-446d-8758-7ce47db39620"}}), root: "main") # => #<User:0x103131b20 @name="Jason">

def self.from_trusted_json(string_or_io : String | IO, root : String) : self #

def self.from_trusted_json(string_or_io : String | IO) : self #

Serialize from a trusted JSON source


def self.from_trusted_yaml(string_or_io : String | IO) : self #

Serialize from a trusted YAML source


def self.from_yaml(string_or_io : String | IO, trusted : Bool = false) : self #

def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) #

def self.new(pull : JSON::PullParser) #

def self.new(rs : DB::ResultSet) #

def self.new(title : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, description : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, type : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, options : JSON::Any | ActiveModel::Model::None = ::ActiveModel::Model::None.new, required : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, choices : JSON::Any | ActiveModel::Model::None = ::ActiveModel::Model::None.new, max_rating : Int32 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, tags : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, deleted_at : Int64 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, deleted : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : Int64 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, created_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, updated_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new) #

def self.new(params : HTTP::Params | Hash(String, String) | Tuple(String, String)) #

Initialize PlaceOS::Model::Survey::Question from HTTP::Params.


Class Method Detail

def self.attributes : Array(Symbol) #

Returns all attribute keys.


def self.auto_generate_id : Bool #

def self.changes(id : PrimaryKeyType = nil) : ChangeFeed #

Changefeed at row (if #id passed) or whole table level. Returns a ChangeFeed instance which can be used to invoke async callbacks via on or use blocking Iterator via each method.


def self.elastic #

def self.from_rs(__temp_999 : DB::ResultSet) #

def self.list(survey_id : Int64 | Nil = nil, deleted : Bool | Nil = nil) #

def self.on_error(err : Exception | IO::Error) #

def self.primary_key : Symbol #

def self.required_question_ids(survey_id : Int64) #

def self.table_name #

Macro Detail

macro scope(name, &block) #

Instance Method Detail

def after_create #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def after_destroy #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def after_initialize(trusted : Bool) #

def after_save #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def after_update #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def answers #

def apply_defaults #

Generate code to apply default values


def assign_attributes(title : String | Missing = Missing, description : String | Nil | Missing = Missing, type : String | Missing = Missing, options : JSON::Any | Missing = Missing, required : Bool | Missing = Missing, choices : JSON::Any | Missing = Missing, max_rating : Int32 | Nil | Missing = Missing, tags : Array(String) | Missing = Missing, deleted_at : Int64 | Nil | Missing = Missing, deleted : Bool | Missing = Missing, id : Int64 | Nil | Missing = Missing, created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing) #

Assign to multiple attributes.


def assign_attributes(params : HTTP::Params | Hash(String, String) | Tuple(String, String)) #

Assign to mulitple attributes via HTTP::Params.


def assign_attributes(model : PlaceOS::Model::Survey::Question) #

Assign to multiple attributes from a model object


def assign_attributes_from_json(json, root : String) #

def assign_attributes_from_json(json) #

def assign_attributes_from_trusted_json(json, root : String) #

def assign_attributes_from_trusted_json(json) #

Assign each field from JSON if field exists in JSON and has changed in model


def assign_attributes_from_trusted_yaml(yaml) #

def assign_attributes_from_yaml(yaml) #

Uses the YAML parser as JSON is valid YAML


def attributes #

Returns a Hash of all attribute values


def attributes_tuple #

Returns a NamedTuple of all attribute values.


def before_create #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def before_destroy #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def before_save #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def before_update #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def changed? #

Check if any attributes have changed.


def changed_attributes #

Returns a Hash with all changed attributes.


def changed_json(io : IO) : Nil #

Serialize the set of changed attributes to JSON.


def changed_json : String #

Serialize the set of changed attributes to JSON.


def changed_persist_attributes #

def changed_yaml(io : IO) : Nil #

Serialize the set of changed attributes to YAML.


def changed_yaml : String #

Serialize the set of changed attributes to YAML.


def choices : JSON::Any #

#choices getter


def choices=(value : JSON::Any) #

#choices setter


def choices? : JSON::Any | Nil #

def choices_assigned? : Bool #

def choices_change : Tuple(JSON::Any | Nil, JSON::Any | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def choices_changed? : Bool #

def choices_default : JSON::Any #

#choices's default value


def choices_present? : Bool #

def choices_was : JSON::Any | Nil #

def choices_will_change! : Nil #

Include #choices in the set of changed attributes, whether it has changed or not.


def clear_changes_information #

Reset changes for all attributes.


def clear_persisted #

def created_at : Time #

#created_at getter


def created_at=(value : Time) #

#created_at setter


def created_at? : Time | Nil #

def created_at_assigned? : Bool #

def created_at_change : Tuple(Time | Nil, Time | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def created_at_changed? : Bool #

def created_at_default : Time #

#created_at's default value


def created_at_present? : Bool #

def created_at_was : Time | Nil #

def created_at_will_change! : Nil #

Include #created_at in the set of changed attributes, whether it has changed or not.


def deleted : Bool? #

Accessors for attributes without JSON mapping


def deleted=(value : Bool) #

#deleted setter


def deleted=(deleted) #

Accessors for attributes without JSON mapping


def deleted? : Bool | Nil #

def deleted_assigned? : Bool #

def deleted_at : Int64 | Nil #

#deleted_at getter


def deleted_at=(value : Int64 | Nil) #

#deleted_at setter


def deleted_at_assigned? : Bool #

def deleted_at_change : Tuple(Int64 | Nil | Nil, Int64 | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def deleted_at_changed? : Bool #

def deleted_at_default : Int64 | Nil #

#deleted_at's default value


def deleted_at_present? : Bool #

def deleted_at_was : Int64 | Nil | Nil #

def deleted_at_will_change! : Nil #

Include #deleted_at in the set of changed attributes, whether it has changed or not.


def deleted_change : Tuple(Bool | Nil, Bool | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def deleted_changed? : Bool #

def deleted_default : Bool #

#deleted's default value


def deleted_present? : Bool #

def deleted_was : Bool | Nil #

def deleted_will_change! : Nil #

Include #deleted in the set of changed attributes, whether it has changed or not.


def description : String | Nil #

#description getter


def description=(value : String | Nil) #

#description setter


def description_assigned? : Bool #

def description_change : Tuple(String | Nil | Nil, String | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def description_changed? : Bool #

def description_default : String | Nil #

#description's default value


def description_present? : Bool #

def description_was : String | Nil | Nil #

def description_will_change! : Nil #

Include #description in the set of changed attributes, whether it has changed or not.


def destroy_answers #

def id : Int64 | Nil #

#id getter


def id=(value : Int64 | Nil) #

#id setter


def id? : Int64 | Nil | Nil #
Description copied from class PgORM::Base

Same as #id but may return nil when the record hasn't been saved instead of raising.


def id_assigned? : Bool #

def id_change : Tuple(Int64 | Nil | Nil, Int64 | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def id_changed? : Bool #

def id_default : Int64 | Nil #

#id's default value


def id_present? : Bool #

def id_was : Int64 | Nil | Nil #

def id_will_change! : Nil #

Include #id in the set of changed attributes, whether it has changed or not.


def invoke_props #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def max_rating : Int32 | Nil #

#max_rating getter


def max_rating=(value : Int32 | Nil) #

#max_rating setter


def max_rating_assigned? : Bool #

def max_rating_change : Tuple(Int32 | Nil | Nil, Int32 | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def max_rating_changed? : Bool #

def max_rating_default : Int32 | Nil #

#max_rating's default value


def max_rating_present? : Bool #

def max_rating_was : Int32 | Nil | Nil #

def max_rating_will_change! : Nil #

Include #max_rating in the set of changed attributes, whether it has changed or not.


def maybe_soft_delete #

def options : JSON::Any #

#options getter


def options=(value : JSON::Any) #

#options setter


def options? : JSON::Any | Nil #

def options_assigned? : Bool #

def options_change : Tuple(JSON::Any | Nil, JSON::Any | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def options_changed? : Bool #

def options_default : JSON::Any #

#options's default value


def options_present? : Bool #

def options_was : JSON::Any | Nil #

def options_will_change! : Nil #

Include #options in the set of changed attributes, whether it has changed or not.


def patch(changes : self) #

def persistent_attributes #

Returns a Hash of all attributes that can be persisted.


def required : Bool #

#required getter


def required=(value : Bool) #

#required setter


def required? : Bool | Nil #

def required_assigned? : Bool #

def required_change : Tuple(Bool | Nil, Bool | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def required_changed? : Bool #

def required_default : Bool #

#required's default value


def required_present? : Bool #

def required_was : Bool | Nil #

def required_will_change! : Nil #

Include #required in the set of changed attributes, whether it has changed or not.


def restore_attributes #

Reset each attribute to their previous values and clears all changes.


def run_create_callbacks(&) #

Wrap a block with callbacks for the appropriate crud operation


def run_destroy_callbacks(&) #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def run_save_callbacks(&) #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def run_update_callbacks(&) #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def save!(**options) #
Description copied from module PgORM::Persistence

Saves the model.

If the model is new, a record gets created in the database, otherwise the existing record gets updated.

Raises

  • PgORM::Error:RecordNotSaved if was record was destroyed before save
  • PgORM::Error:RecordNotSaved if was record was not saved by DB
  • PgORM::Error:RecordInvalid on validation failures

def soft_delete #

def table_name #

def tags : Array(String) #

#tags getter


def tags=(value : Array(String)) #

#tags setter


def tags? : Array(String) | Nil #

def tags_assigned? : Bool #

def tags_change : Tuple(Array(String) | Nil, Array(String) | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def tags_changed? : Bool #

def tags_default : Array(String) #

#tags's default value


def tags_present? : Bool #

def tags_was : Array(String) | Nil #

def tags_will_change! : Nil #

Include #tags in the set of changed attributes, whether it has changed or not.


def title : String #

#title getter


def title=(value : String) #

Setters #title setter


def title? : String | Nil #

def title_assigned? : Bool #

def title_change : Tuple(String | Nil, String | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def title_changed? : Bool #

def title_default : String #

#title's default value


def title_present? : Bool #

def title_was : String | Nil #

def title_will_change! : Nil #

Include #title in the set of changed attributes, whether it has changed or not.


def to_json(json : JSON::Builder) #

def type : String #

#type getter


def type=(value : String) #

#type setter


def type? : String | Nil #

def type_assigned? : Bool #

def type_change : Tuple(String | Nil, String | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def type_changed? : Bool #

def type_default : String #

#type's default value


def type_present? : Bool #

def type_was : String | Nil #

def type_will_change! : Nil #

Include #type in the set of changed attributes, whether it has changed or not.


def updated_at : Time #

#updated_at getter


def updated_at=(value : Time) #

#updated_at setter


def updated_at? : Time | Nil #

def updated_at_assigned? : Bool #

def updated_at_change : Tuple(Time | Nil, Time | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def updated_at_changed? : Bool #

def updated_at_default : Time #

#updated_at's default value


def updated_at_present? : Bool #

def updated_at_was : Time | Nil #

def updated_at_will_change! : Nil #

Include #updated_at in the set of changed attributes, whether it has changed or not.


def validate_nilability #

Validate that all non-nillable fields have values.