class PlaceOS::Model::Guest

Included Modules

Defined in:

placeos-models/guest.cr

Constant Summary

CALLBACKS = {before_save: [do @email = email.strip.downcase @searchable = String.build do |sb| sb << email if name_assigned? sb << " #{name}" end if preferred_name_assigned? sb << " #{preferred_name}" end if organisation_assigned? sb << " #{organisation}" end if phone_assigned? sb << " #{phone}" end if id_assigned? sb << " #{id}" end end.downcase end] 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_attendees] 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(email : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, name : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, preferred_name : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, phone : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, organisation : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, notes : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, photo : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, banned : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, dangerous : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, searchable : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, extension_data : JSON::Any | ActiveModel::Model::None = ::ActiveModel::Model::None.new, checked_in : Bool | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, visit_expected : Bool | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, booking : PlaceOS::Model::Booking | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, event : PlaceCalendar::Event | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, event_metadata : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, booking_rep : PlaceOS::Model::Booking | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, tenant_id : Int64 | Nil | 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::Guest from HTTP::Params.


Class Method Detail

def self.attributes : Array(Symbol) #

Returns all attribute keys.


def self.auto_generate_id : Bool #

def self.by_tenant(tenant_id) #

def self.by_tenant_id(id) #

Look up instances of this model dependent on the foreign key


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_592 : DB::ResultSet) #

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

def self.primary_key : Symbol #

def self.table_name #

Macro Detail

macro scope(name, &block) #

Instance Method Detail

def __tenant : Tenant | Nil #

def __tenant=(__tenant : Tenant | Nil) #

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 apply_defaults #

Generate code to apply default values


def assign_attributes(email : String | Missing = Missing, name : String | Nil | Missing = Missing, preferred_name : String | Nil | Missing = Missing, phone : String | Nil | Missing = Missing, organisation : String | Nil | Missing = Missing, notes : String | Nil | Missing = Missing, photo : String | Nil | Missing = Missing, banned : Bool | Missing = Missing, dangerous : Bool | Missing = Missing, searchable : String | Nil | Missing = Missing, extension_data : JSON::Any | Missing = Missing, checked_in : Bool | Nil | Missing = Missing, visit_expected : Bool | Nil | Missing = Missing, booking : PlaceOS::Model::Booking | Nil | Missing = Missing, event : PlaceCalendar::Event | Nil | Missing = Missing, event_metadata : String | Nil | Missing = Missing, booking_rep : PlaceOS::Model::Booking | Nil | Missing = Missing, tenant_id : Int64 | Nil | 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::Guest) #

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 attendee_for(event_id) #

def attendees #

def attending_today(tenant_id, timezone) #

def attributes #

Returns a Hash of all attribute values


def attributes_tuple #

Returns a NamedTuple of all attribute values.


def banned : Bool #

#banned getter


def banned=(value : Bool) #

#banned setter


def banned? : Bool | Nil #

def banned_assigned? : Bool #

def banned_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 banned_changed? : Bool #

def banned_default : Bool #

#banned's default value


def banned_present? : Bool #

def banned_was : Bool | Nil #

def banned_will_change! : Nil #

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


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 booking : PlaceOS::Model::Booking? #

def booking=(value : PlaceOS::Model::Booking | Nil) #

#booking setter


def booking=(booking) #

def booking_assigned? : Bool #

def booking_change : Tuple(PlaceOS::Model::Booking | Nil | Nil, PlaceOS::Model::Booking | Nil | Nil) | Nil #

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


def booking_changed? : Bool #

def booking_default : Booking | Nil #

#booking's default value


def booking_present? : Bool #

def booking_rep : PlaceOS::Model::Booking? #

def booking_rep=(value : PlaceOS::Model::Booking | Nil) #

#booking_rep setter


def booking_rep=(booking_rep) #

def booking_rep_assigned? : Bool #

def booking_rep_change : Tuple(PlaceOS::Model::Booking | Nil | Nil, PlaceOS::Model::Booking | Nil | Nil) | Nil #

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


def booking_rep_changed? : Bool #

def booking_rep_default : Booking | Nil #

#booking_rep's default value


def booking_rep_present? : Bool #

def booking_rep_was : PlaceOS::Model::Booking | Nil | Nil #

def booking_rep_will_change! : Nil #

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


def booking_was : PlaceOS::Model::Booking | Nil | Nil #

def booking_will_change! : Nil #

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


def bookings(future_only = true, limit = 10) #

def change_extension_data(data : JSON::Any) #

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 checked_in : Bool? #

Accessors for attributes without JSON mapping


def checked_in=(value : Bool | Nil) #

#checked_in setter


def checked_in=(checked_in) #

Accessors for attributes without JSON mapping


def checked_in_assigned? : Bool #

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

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


def checked_in_changed? : Bool #

def checked_in_default : Bool | Nil #

#checked_in's default value


def checked_in_present? : Bool #

def checked_in_was : Bool | Nil | Nil #

def checked_in_will_change! : Nil #

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


def clear_changes_information #

Reset changes for all attributes.


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 dangerous : Bool #

#dangerous getter


def dangerous=(value : Bool) #

#dangerous setter


def dangerous? : Bool | Nil #

def dangerous_assigned? : Bool #

def dangerous_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 dangerous_changed? : Bool #

def dangerous_default : Bool #

#dangerous's default value


def dangerous_present? : Bool #

def dangerous_was : Bool | Nil #

def dangerous_will_change! : Nil #

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


def destroy_attendees #

def email : String #

#email getter


def email=(value : String) #

Setters #email setter


def email? : String | Nil #

def email_assigned? : Bool #

def email_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 email_changed? : Bool #

def email_default : String #

#email's default value


def email_present? : Bool #

def email_was : String | Nil #

def email_will_change! : Nil #

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


def event : PlaceCalendar::Event? #

def event=(value : PlaceCalendar::Event | Nil) #

#event setter


def event=(event) #

def event_assigned? : Bool #

def event_change : Tuple(PlaceCalendar::Event | Nil | Nil, PlaceCalendar::Event | Nil | Nil) | Nil #

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


def event_changed? : Bool #

def event_default : PlaceCalendar::Event | Nil #

#event's default value


def event_metadata : String? #

def event_metadata=(value : String | Nil) #

def event_metadata=(event_metadata) #

def event_metadata_assigned? : Bool #

def event_metadata_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 event_metadata_changed? : Bool #

def event_metadata_default : String | Nil #

#event_metadata's default value


def event_metadata_present? : Bool #

def event_metadata_was : String | Nil | Nil #

def event_metadata_will_change! : Nil #

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


def event_present? : Bool #

def event_was : PlaceCalendar::Event | Nil | Nil #

def event_will_change! : Nil #

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


def events(future_only = true, limit = 10) #

def extension_data : JSON::Any #

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

def extension_data? : JSON::Any | Nil #

def extension_data_assigned? : Bool #

def extension_data_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 extension_data_changed? : Bool #

def extension_data_default : JSON::Any #

#extension_data's default value


def extension_data_present? : Bool #

def extension_data_was : JSON::Any | Nil #

def extension_data_will_change! : Nil #

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


def for_booking_to_h(visitor : Attendee, booking_details : Booking | Nil) #

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 name : String | Nil #

#name getter


def name=(value : String | Nil) #

#name setter


def name_assigned? : Bool #

def name_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 name_changed? : Bool #

def name_default : String | Nil #

#name's default value


def name_present? : Bool #

def name_was : String | Nil | Nil #

def name_will_change! : Nil #

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


def notes : String | Nil #

#notes getter


def notes=(value : String | Nil) #

#notes setter


def notes_assigned? : Bool #

def notes_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 notes_changed? : Bool #

def notes_default : String | Nil #

#notes's default value


def notes_present? : Bool #

def notes_was : String | Nil | Nil #

def notes_will_change! : Nil #

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


def organisation : String | Nil #

#organisation getter


def organisation=(value : String | Nil) #

#organisation setter


def organisation_assigned? : Bool #

def organisation_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 organisation_changed? : Bool #

def organisation_default : String | Nil #

#organisation's default value


def organisation_present? : Bool #

def organisation_was : String | Nil | Nil #

def organisation_will_change! : Nil #

Include #organisation 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 phone : String | Nil #

#phone getter


def phone=(value : String | Nil) #

#phone setter


def phone_assigned? : Bool #

def phone_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 phone_changed? : Bool #

def phone_default : String | Nil #

#phone's default value


def phone_present? : Bool #

def phone_was : String | Nil | Nil #

def phone_will_change! : Nil #

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


def photo : String | Nil #

#photo getter


def photo=(value : String | Nil) #

#photo setter


def photo_assigned? : Bool #

def photo_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 photo_changed? : Bool #

def photo_default : String | Nil #

#photo's default value


def photo_present? : Bool #

def photo_was : String | Nil | Nil #

def photo_will_change! : Nil #

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


def preferred_name : String | Nil #

def preferred_name=(value : String | Nil) #

def preferred_name_assigned? : Bool #

def preferred_name_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 preferred_name_changed? : Bool #

def preferred_name_default : String | Nil #

#preferred_name's default value


def preferred_name_present? : Bool #

def preferred_name_was : String | Nil | Nil #

def preferred_name_will_change! : Nil #

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


def reset_associations #

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 searchable : String | Nil #

#searchable getter


def searchable=(value : String | Nil) #

#searchable setter


def searchable_assigned? : Bool #

def searchable_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 searchable_changed? : Bool #

def searchable_default : String | Nil #

#searchable's default value


def searchable_present? : Bool #

def searchable_was : String | Nil | Nil #

def searchable_will_change! : Nil #

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


def table_name #

def tenant : Tenant | Nil #

Retrieves the parent relationship


def tenant! : Tenant #

def tenant=(parent : Tenant) #

Sets the parent relationship


def tenant_id : Int64 | Nil #

#tenant_id getter


def tenant_id=(value : Int64 | Nil) #

#tenant_id setter


def tenant_id_assigned? : Bool #

def tenant_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 tenant_id_changed? : Bool #

def tenant_id_default : Int64 | Nil #

#tenant_id's default value


def tenant_id_present? : Bool #

def tenant_id_was : Int64 | Nil | Nil #

def tenant_id_will_change! : Nil #

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


def to_h(visitor : Attendee | Nil, is_parent_metadata, meeting_details : PlaceCalendar::Event | Nil) #

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.


def visit_expected : Bool? #

def visit_expected=(value : Bool | Nil) #

def visit_expected=(visit_expected) #

def visit_expected_assigned? : Bool #

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

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


def visit_expected_changed? : Bool #

def visit_expected_default : Bool | Nil #

#visit_expected's default value


def visit_expected_present? : Bool #

def visit_expected_was : Bool | Nil | Nil #

def visit_expected_will_change! : Nil #

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