active_record-acts_as 1.0.5 → 1.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05ede0788d02924d7ddfff896c7afc9cfd65699e
4
- data.tar.gz: 6c07973b511504c7fbc59648560a3bab71799620
3
+ metadata.gz: 64cbfe3c6d86757fceca3cd920138468bac93d4b
4
+ data.tar.gz: 4687d0558602f189e3c771174aa986afadf3b4cb
5
5
  SHA512:
6
- metadata.gz: ec862802c12677bd788fceade3c11d7204163d0d223a477852fbec7a2f617218b8f96f80032c377284d4d6ef62844cff164af7a64af17f95277baf87b0032a60
7
- data.tar.gz: a1ede8555a018302ca0ce07d48e065f0d920240cceadb4cfb4acda9297f43de92b1f99927d69590e7447352cd945c11ae57c58dd35c24ec79a26f04448570aa2
6
+ metadata.gz: 26021ad15fd01db7dcbad29e912ed2a6b96a66ed148f8e442bca9f8c5ace9786c4171b6d318773639a1de20b04ce0a28420f72ef1dd0d2c5a218189ead20c883
7
+ data.tar.gz: 3912076316e37325948021045815231891e045fa5ac5488830399d68b61d5d1e5296fc20a771efbc4ee7184a56b2ad79db76b7e459fd6a817f20f74e01a80e17
@@ -46,7 +46,23 @@ module ActiveRecord
46
46
  acting_as.send(:write_attribute, attr_name, value, *args, &block)
47
47
  end
48
48
  end
49
- private :write_attribute
49
+
50
+ def read_store_attribute(store_attribute, key)
51
+ if attribute_method?(store_attribute.to_s)
52
+ super
53
+ else
54
+ acting_as.read_store_attribute(store_attribute, key)
55
+ end
56
+ end
57
+
58
+ def write_store_attribute(store_attribute, key, value)
59
+ if attribute_method?(store_attribute.to_s)
60
+ super
61
+ else
62
+ acting_as.send(:write_store_attribute, store_attribute, key, value)
63
+ end
64
+ end
65
+ private :write_attribute, :write_store_attribute
50
66
 
51
67
  def attributes
52
68
  acting_as_persisted? ? acting_as.attributes.except(acting_as_reflection.type, acting_as_reflection.foreign_key).merge(super) : super
@@ -1,6 +1,6 @@
1
1
 
2
2
  module ActiveRecord
3
3
  module ActsAs
4
- VERSION = "1.0.5"
4
+ VERSION = "1.0.6"
5
5
  end
6
6
  end
data/spec/acts_as_spec.rb CHANGED
@@ -123,6 +123,33 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
123
123
  expect(pen.present).to eq("pen - $0.8")
124
124
  end
125
125
 
126
+ it 'responds to serialized attribute' do
127
+ expect(pen).to respond_to('option1')
128
+ expect(isolated_pen).to respond_to('option2')
129
+ end
130
+
131
+ it 'responds to supermodel serialized attribute' do
132
+ expect(pen).to respond_to('global_option')
133
+ expect(isolated_pen).to respond_to('global_option')
134
+ end
135
+
136
+ it 'does not respond to other models serialized attribute' do
137
+ expect(pen).to_not respond_to('option2')
138
+ expect(isolated_pen).to_not respond_to('option1')
139
+ end
140
+
141
+ it 'saves supermodel serialized attribute on save' do
142
+ pen.option1 = 'value1'
143
+ pen.global_option = 'globalvalue'
144
+ pen.save
145
+ pen.reload
146
+ isolated_pen.save
147
+ isolated_pen.reload
148
+ expect(pen.option1).to eq('value1')
149
+ expect(isolated_pen).to_not respond_to('option1')
150
+ expect(JSON.parse(pen.to_json)).to eq(JSON.parse('{"id":' + pen.id.to_s + ',"name":"pen","price":0.8,"store_id":null,"settings":{"global_option":"globalvalue","option1":"value1"},"color":"red"}'))
151
+ end
152
+
126
153
  it "saves supermodel attributes on save" do
127
154
  pen.save
128
155
  pen.reload
@@ -185,7 +212,7 @@ RSpec.describe "ActiveRecord::Base model with #acts_as called" do
185
212
  it "if the submodel instance association exists" do
186
213
  p = Product.new(name: 'Test Pen', price: 0.8, actable: pen)
187
214
  p.save
188
- expect(JSON.parse(pen.to_json)).to eq(JSON.parse('{"id":' + pen.id.to_s + ',"name":"pen","price":0.8,"store_id":null,"color":"red"}'))
215
+ expect(JSON.parse(pen.to_json)).to eq(JSON.parse('{"id":' + pen.id.to_s + ',"name":"pen","price":0.8,"store_id":null,"settings": {},"color":"red"}'))
189
216
  end
190
217
  end
191
218
 
data/spec/models.rb CHANGED
@@ -5,6 +5,7 @@ class Product < ActiveRecord::Base
5
5
  actable
6
6
  belongs_to :store
7
7
  validates_presence_of :name, :price
8
+ store :settings, accessors: [:global_option]
8
9
 
9
10
  def present
10
11
  "#{name} - $#{price}"
@@ -17,6 +18,7 @@ end
17
18
 
18
19
  class Pen < ActiveRecord::Base
19
20
  acts_as :product
21
+ store_accessor :settings, :option1
20
22
 
21
23
  validates_presence_of :color
22
24
  end
@@ -24,6 +26,7 @@ end
24
26
  class IsolatedPen < ActiveRecord::Base
25
27
  self.table_name = :pens
26
28
  acts_as :product, validates_actable: false
29
+ store_accessor :settings, :option2
27
30
 
28
31
  validates_presence_of :color
29
32
  end
@@ -60,6 +63,7 @@ initialize_database do
60
63
  t.string :name
61
64
  t.float :price
62
65
  t.integer :store_id
66
+ t.text :settings
63
67
  t.actable
64
68
  end
65
69
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record-acts_as
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hassan Zamani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-15 00:00:00.000000000 Z
11
+ date: 2015-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3