shop_bunny 0.7.4.16 → 0.7.4.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
1
  class CartItem < ActiveRecord::Base
2
2
  belongs_to :cart
3
- belongs_to :item, :class_name => ShopBunny.item_model_class_name
3
+ # belongs_to :item, :class_name => ShopBunny.item_model_class_name
4
4
 
5
5
  validates_presence_of :cart_id
6
- validates_presence_of :item_id
6
+ # validates_presence_of :item_id
7
7
  validates_numericality_of :quantity
8
8
 
9
9
  before_validation :set_default_quantity
@@ -17,6 +17,24 @@ class CartItem < ActiveRecord::Base
17
17
  def total_price
18
18
  quantity * item.price
19
19
  end
20
+
21
+ def item=(new_item)
22
+ write_attribute(:raw_item, new_item.to_json)
23
+ @parsed_raw_item = nil
24
+ new_item
25
+ end
26
+
27
+ def item
28
+ return nil unless raw_item
29
+ unless @parsed_raw_item
30
+ json = JSON.parse(raw_item).values.first
31
+ if json
32
+ @parsed_raw_item = ShopBunny.item_model_class_name.constantize.new(json)
33
+ @parsed_raw_item.id = json['id']
34
+ end
35
+ end
36
+ @parsed_raw_item
37
+ end
20
38
 
21
39
  private
22
40
 
@@ -0,0 +1,16 @@
1
+ class AddRawItemToCartItems < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :cart_items, :raw_item, :text
4
+
5
+ CartItem.all.each do |e|
6
+ if e.item
7
+ e.raw_item = e.item.to_json
8
+ e.save!
9
+ end
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ remove_column :cart_items, :raw_item
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ class RemoveItemIdFromCartItems < ActiveRecord::Migration
2
+ def self.up
3
+ remove_column :cart_items, :item_id
4
+ end
5
+
6
+ def self.down
7
+ add_column :cart_items, :item_id, :integer
8
+ end
9
+ end
@@ -56,7 +56,8 @@ module ShopBunny
56
56
  #increases the quantity of an article. creates a new one if it doesn't exist
57
57
  def add_item(item,options = {})
58
58
  options[:quantity] ||= 1
59
- cart_item = self.cart_items.find_or_create_by_item_id(item.id)
59
+ cart_item = self.cart_items.select {|e| e.item.id == item.id}.first
60
+ cart_item ||= self.cart_items.build(:item => item)
60
61
  cart_item.quantity += options[:quantity]
61
62
  cart_item.save!
62
63
 
@@ -69,7 +70,7 @@ module ShopBunny
69
70
 
70
71
  #removes a quantity of an article specified by :article_id, returns nil if no article has been found
71
72
  def remove_item(item,options = {})
72
- cart_item = self.cart_items.find_by_item_id(item)
73
+ cart_item = self.cart_items.select {|e| e.item.id == item.id}.first
73
74
  if cart_item
74
75
  options[:quantity] ||= cart_item.quantity
75
76
  if cart_item
@@ -86,7 +87,7 @@ module ShopBunny
86
87
 
87
88
  #sets the quantity of an article specified by :article_id, returns nil if no article has been found
88
89
  def update_item(item,options)
89
- cart_item = self.cart_items.find_by_item_id(item)
90
+ cart_item = self.cart_items.select {|e| e.item.id == item.id}.first
90
91
  if cart_item
91
92
  cart_item.quantity = options[:quantity]
92
93
  cart_item.save!
@@ -143,7 +144,7 @@ module ShopBunny
143
144
  use.destroy if use.coupon.value_of_automatic_add
144
145
  end
145
146
 
146
- save!
147
+ save
147
148
  reload
148
149
 
149
150
  Coupon.valid.automatically_added_over(item_sum).each do |coupon|
data/lib/shop_bunny.rb CHANGED
@@ -18,5 +18,28 @@ module ShopBunny
18
18
  # initializer which gets generated by `rails generate shop_bunny:install`
19
19
  def self.setup
20
20
  yield self
21
+
22
+ item_class = ShopBunny.item_model_class_name.constantize
23
+
24
+ unless item_class.method_defined?(:as_json_with_included_id)
25
+ item_class.class_eval do
26
+ def shop_bunny_json_options(options)
27
+ options ||= {}
28
+ options[:methods] ||= []
29
+ if options[:methods].kind_of?(Array)
30
+ options[:methods] += [:id]
31
+ else
32
+ options[:methods] = [options[:methods], :id]
33
+ end
34
+ options[:methods].uniq!
35
+ options
36
+ end
37
+
38
+ def as_json_with_included_id(options = {})
39
+ as_json_without_included_id(shop_bunny_json_options(options))
40
+ end
41
+ alias_method_chain :as_json, :included_id
42
+ end
43
+ end
21
44
  end
22
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shop_bunny
3
3
  version: !ruby/object:Gem::Version
4
- hash: 71
4
+ hash: 69
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
9
  - 4
10
- - 16
11
- version: 0.7.4.16
10
+ - 17
11
+ version: 0.7.4.17
12
12
  platform: ruby
13
13
  authors:
14
14
  - kopfmaschine.com
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-12-13 00:00:00 +01:00
19
+ date: 2011-02-03 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies: []
22
22
 
@@ -30,34 +30,36 @@ extensions: []
30
30
  extra_rdoc_files: []
31
31
 
32
32
  files:
33
- - lib/generators/shop_bunny/templates/shopbunny_model_template.rb
34
- - lib/generators/shop_bunny/templates/shopbunny_controller_template.rb
35
33
  - lib/generators/shop_bunny/install_generator.rb
36
- - lib/shop_bunny.rb
34
+ - lib/generators/shop_bunny/templates/shopbunny_controller_template.rb
35
+ - lib/generators/shop_bunny/templates/shopbunny_model_template.rb
37
36
  - lib/shop_bunny/cart_controller_module.rb
38
37
  - lib/shop_bunny/cart_module.rb
39
- - lib/shop_bunny/shipping_cost_calculator.rb
40
38
  - lib/shop_bunny/engine.rb
41
- - app/views/carts/show.html.erb
39
+ - lib/shop_bunny/shipping_cost_calculator.rb
40
+ - lib/shop_bunny.rb
41
+ - app/controllers/application_controller.rb
42
+ - app/controllers/carts_controller.rb
42
43
  - app/models/cart.rb
43
- - app/models/coupon_use.rb
44
44
  - app/models/cart_item.rb
45
45
  - app/models/coupon.rb
46
+ - app/models/coupon_use.rb
46
47
  - app/models/item.rb
47
- - app/controllers/application_controller.rb
48
- - app/controllers/carts_controller.rb
49
- - db/migrate/20101125151017_change_valid_from_and_until_to_datetime_on_coupons.rb
50
- - db/migrate/20100915162029_remove_owner_id_from_carts.rb
51
- - db/migrate/20100915091059_create_coupons.rb
52
- - db/migrate/20101125140137_add_value_of_automatic_add_to_coupons.rb
53
- - db/migrate/20100915073016_create_items.rb
48
+ - app/views/carts/show.html.erb
54
49
  - db/migrate/20100902115627_create_carts.rb
50
+ - db/migrate/20100902115757_create_cart_items.rb
51
+ - db/migrate/20100915073016_create_items.rb
52
+ - db/migrate/20100915091059_create_coupons.rb
55
53
  - db/migrate/20100915093821_create_coupon_uses.rb
54
+ - db/migrate/20100915162029_remove_owner_id_from_carts.rb
56
55
  - db/migrate/20100916194407_set_default_column_value_for_cart_items_quantity.rb
57
- - db/migrate/20100902115757_create_cart_items.rb
56
+ - db/migrate/20101125140137_add_value_of_automatic_add_to_coupons.rb
57
+ - db/migrate/20101125151017_change_valid_from_and_until_to_datetime_on_coupons.rb
58
+ - db/migrate/20110202235446_add_raw_item_to_cart_items.rb
59
+ - db/migrate/20110203005514_remove_item_id_from_cart_items.rb
58
60
  - config/initializers/add_cart_finder_to_controllers.rb
59
- - config/initializers/shop_bunny.rb
60
61
  - config/initializers/machinist.rb
62
+ - config/initializers/shop_bunny.rb
61
63
  - config/routes.rb
62
64
  has_rdoc: true
63
65
  homepage: http://kopfmaschine.com