lib/ecoportal/api/internal/person.rb in ecoportal-api-0.8.2 vs lib/ecoportal/api/internal/person.rb in ecoportal-api-0.8.3
- old
+ new
@@ -9,24 +9,30 @@
def as_json
super.update("account" => account&.as_json)
end
+ def as_update(ref = :last, ignore: [])
+ super(ref, ignore: ignore | ["user_id", "permissions_merged", "prefilter"])
+ end
+
# Sets the Account to the person, depending on the paramter received:
# - `nil`: blanks the account.
# - `Account`: sets a copy of the object param as account.
- # - `Hash`: slices the properties of `Account`.
+ # - `Hash`: slices the properties of `Account` (keeping the value of `user_id` if there was already account).
# @note this method does not make dirty the account (meaning that `as_json` will be an empty hash `{}`)
# @param value [nil, Account, Hash] value to be set.
# @return [nil, Account] the resulting `Account` set to the person.
def account=(value)
case value
when NilClass
doc["account"] = nil
when Internal::Account
doc["account"] = JSON.parse(value.to_json)
when Hash
- doc["account"] = value.slice(*%w[policy_group_ids default_tag landing_page_id permissions_preset permissions_custom preferences prefilter login_provider_ids starred_ids])
+ user_id = account.user_id if account
+ doc["account"] = value.slice(*Internal::Account::PROPERTIES)
+ doc["account"]["user_id"] = user_id if user_id
else
# TODO
raise "Invalid set on account: Need nil, Account or Hash; got #{value.class}"
end
remove_instance_variable("@account") if defined?(@account)