activerecord-typedstore
activerecord-typedstore copied to clipboard
Unable to save properties
I'm using typedstore with lockbox. When trying to assign the values in setting in a request it seems to work. Not getting any errors. But after going into the console and checking the value it doesn't seem to work, it's returning the default value.
ie.
User.last.language # => 'en-us'
# but
User.last.city # => ""
controller
def create
user = User.find_by(q2_id: q2_id_param)
if user.blank?
user = User.find_or_initialize_by(
email: q2_user_param[:email_address]
)
unless user.persisted?
user.password = generated_password
user.password_confirmation = generated_password
end
user.q2_id = q2_id_param
end
user.map_settings!(q2_user_param)
user.reload
render json: JSON.dump(
user: {
uuid: user.hp_user_uuid,
auth_token: user.authentication_token
}
)
end
having_settings.rby
module HavingSettings
extend ActiveSupport::Concern
included do
encrypts :settings # , migrating: true
typed_store :setting, coder: JSON do |s|
s.string :address1, default: ''
s.string :address2, default: ''
s.string :city, default: ''
s.string :customer_id, default: ''
s.string :customer_name, default: ''
s.string :customer_primary_cif, default: ''
s.string :social_security_number, default: ''
s.string :email_address, default: ''
s.string :first_name, default: ''
s.string :last_name, default: ''
s.string :group_desc, default: ''
s.string :group_id, default: ''
s.string :home_phone, default: ''
s.string :aba, default: ''
s.string :hq_session_id, default: ''
s.string :language, default: 'en-us'
s.string :login_name, default: ''
s.string :middle_name, default: ''
s.string :mobile_phone, default: ''
s.string :postal_code, default: ''
s.string :ssn, default: ''
s.string :state, default: ''
s.string :user_logon_id, default: ''
s.string :user_id, default: ''
s.string :user_primary_cif, default: ''
s.string :work_phone, default: ''
s.string :ip_address, default: ''
s.string :token, default: ''
s.string :uuid, default: SecureRandom.uuid
s.string :hp_user_uuid, default: SecureRandom.uuid
end
def map_settings!(data)
update!(data.to_h)
rescue StandardError => e
Rails.logger.error(e)
raise
end
end
end
body of postman request
{
"user": {"city": "Houston",
"state": "Texas",
"first_name": "Antarr",
"email_address": "[email protected]",
"user_id": "q2-user-4"}
}