diff options
author | Brendan Deere <brendan@stembolt.com> | 2016-09-27 14:56:25 -0700 |
---|---|---|
committer | Brendan Deere <brendan@stembolt.com> | 2016-09-27 14:59:28 -0700 |
commit | 0931216cbc83f9a7a8838828a60cbc04e8afeea2 (patch) | |
tree | 68e9d29b4c809812f6031758e1951993191e2871 /lib/solidus_subscriptions/permitted_attributes.rb | |
parent | aae2fba963fffb0d27a97049af52cd1d72434970 (diff) |
Override Spree Permitted attributes together
Instead of overriding Spree::PermittedAttributes in various decorators,
group this override together in its own module.
At least now this is all happening in the same place
Diffstat (limited to 'lib/solidus_subscriptions/permitted_attributes.rb')
-rw-r--r-- | lib/solidus_subscriptions/permitted_attributes.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/solidus_subscriptions/permitted_attributes.rb b/lib/solidus_subscriptions/permitted_attributes.rb new file mode 100644 index 0000000..a103922 --- /dev/null +++ b/lib/solidus_subscriptions/permitted_attributes.rb @@ -0,0 +1,36 @@ +# This module is responsible for managing what attributes can be updated +# through the api. It also overrides Spree::Permitted attributes to allow the +# solidus api to accept nested params for subscription models as well +module SolidusSubscriptions + module PermittedAttributes + class << self + def update_spree_permiteed_attributes + Spree::PermittedAttributes.line_item_attributes << { + subscription_line_items_attributes: nested( + subscription_line_item_attributes + ) + } + + Spree::PermittedAttributes.user_attributes << { + subscriptions_attributes: nested(subscription_attributes) + } + end + + def subscription_line_item_attributes + Config.subscription_line_item_attributes + end + + def subscription_attributes + [ + { line_item_attributes: nested(subscription_line_item_attributes) - [:subscribable_id] } + ] + end + + private + + def nested(attributes) + attributes << :id + end + end + end +end |