module Qiita::Team::Services::Hooks::Concerns::Persistable
Public Class Methods
new(hash)
click to toggle source
@param hash [Hash{String => Object}] deserialized properties hash.
# File lib/qiita/team/services/hooks/concerns/persistable.rb, line 35 def initialize(hash) self.class.service_properties.each do |property| if hash.key?(property.name) public_send("#{property.name}=", hash[property.name]) else public_send("#{property.name}=", property.default) end end end
Public Instance Methods
define_property(name, type: :string, default: nil)
click to toggle source
@param name [Symbol] @param type [Symbol] :string or :boolean. @param default [String, true, false] @return [void]
# File lib/qiita/team/services/hooks/concerns/persistable.rb, line 28 def define_property(name, type: :string, default: nil) service_properties << Properties.create(name, type, default) attr_accessor name end
marked_for_destruction?()
click to toggle source
Returns whether or not this record will be destroyed as part of the parents save transaction.
@note Override ActiveRecord::AutosaveAssociation#marked_for_destruction?.
# File lib/qiita/team/services/hooks/concerns/persistable.rb, line 58 def marked_for_destruction? false end
property_names()
click to toggle source
@return [Array<String>]
# File lib/qiita/team/services/hooks/concerns/persistable.rb, line 18 def property_names service_properties.map(&:name) end
service_properties()
click to toggle source
@return [Array<Qiita::Team::Services::Properties::Base>]
# File lib/qiita/team/services/hooks/concerns/persistable.rb, line 13 def service_properties @service_properties ||= [] end
to_hash()
click to toggle source
Serialize the service object.
@return [Hash{String => Object}] serialized properties.
# File lib/qiita/team/services/hooks/concerns/persistable.rb, line 48 def to_hash self.class.service_properties.map(&:name).each_with_object({}) do |name, hash| hash[name] = public_send(name) end end