summaryrefslogtreecommitdiff
path: root/lib/solidus_subscriptions/permitted_attributes.rb
diff options
context:
space:
mode:
authorBrendan Deere <brendan@stembolt.com>2016-09-27 14:56:25 -0700
committerBrendan Deere <brendan@stembolt.com>2016-09-27 14:59:28 -0700
commit0931216cbc83f9a7a8838828a60cbc04e8afeea2 (patch)
tree68e9d29b4c809812f6031758e1951993191e2871 /lib/solidus_subscriptions/permitted_attributes.rb
parentaae2fba963fffb0d27a97049af52cd1d72434970 (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.rb36
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