acts_as_metadata 0.3.9 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,79 +1,67 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- acts_as_metadata (0.3.8)
4
+ acts_as_metadata (0.3.9)
5
5
  rails (>= 3.0.0)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- actionmailer (3.2.12)
11
- actionpack (= 3.2.12)
12
- mail (~> 2.4.4)
13
- actionpack (3.2.12)
14
- activemodel (= 3.2.12)
15
- activesupport (= 3.2.12)
16
- builder (~> 3.0.0)
10
+ actionmailer (4.0.0)
11
+ actionpack (= 4.0.0)
12
+ mail (~> 2.5.3)
13
+ actionpack (4.0.0)
14
+ activesupport (= 4.0.0)
15
+ builder (~> 3.1.0)
17
16
  erubis (~> 2.7.0)
18
- journey (~> 1.0.4)
19
- rack (~> 1.4.5)
20
- rack-cache (~> 1.2)
21
- rack-test (~> 0.6.1)
22
- sprockets (~> 2.2.1)
23
- activemodel (3.2.12)
24
- activesupport (= 3.2.12)
25
- builder (~> 3.0.0)
26
- activerecord (3.2.12)
27
- activemodel (= 3.2.12)
28
- activesupport (= 3.2.12)
29
- arel (~> 3.0.2)
30
- tzinfo (~> 0.3.29)
31
- activeresource (3.2.12)
32
- activemodel (= 3.2.12)
33
- activesupport (= 3.2.12)
34
- activesupport (3.2.12)
35
- i18n (~> 0.6)
36
- multi_json (~> 1.0)
37
- arel (3.0.2)
38
- builder (3.0.4)
17
+ rack (~> 1.5.2)
18
+ rack-test (~> 0.6.2)
19
+ activemodel (4.0.0)
20
+ activesupport (= 4.0.0)
21
+ builder (~> 3.1.0)
22
+ activerecord (4.0.0)
23
+ activemodel (= 4.0.0)
24
+ activerecord-deprecated_finders (~> 1.0.2)
25
+ activesupport (= 4.0.0)
26
+ arel (~> 4.0.0)
27
+ activerecord-deprecated_finders (1.0.3)
28
+ activesupport (4.0.0)
29
+ i18n (~> 0.6, >= 0.6.4)
30
+ minitest (~> 4.2)
31
+ multi_json (~> 1.3)
32
+ thread_safe (~> 0.1)
33
+ tzinfo (~> 0.3.37)
34
+ arel (4.0.0)
35
+ atomic (1.1.10)
36
+ builder (3.1.4)
39
37
  diff-lcs (1.1.3)
40
38
  erubis (2.7.0)
41
- hike (1.2.1)
39
+ hike (1.2.3)
42
40
  i18n (0.6.4)
43
- journey (1.0.4)
44
- json (1.7.7)
45
- mail (2.4.4)
46
- i18n (>= 0.4.0)
41
+ mail (2.5.4)
47
42
  mime-types (~> 1.16)
48
43
  treetop (~> 1.4.8)
49
- mime-types (1.21)
50
- multi_json (1.6.1)
44
+ mime-types (1.23)
45
+ minitest (4.7.5)
46
+ multi_json (1.7.7)
51
47
  polyglot (0.3.3)
52
- rack (1.4.5)
53
- rack-cache (1.2)
54
- rack (>= 0.4)
55
- rack-ssl (1.3.3)
56
- rack
48
+ rack (1.5.2)
57
49
  rack-test (0.6.2)
58
50
  rack (>= 1.0)
59
- rails (3.2.12)
60
- actionmailer (= 3.2.12)
61
- actionpack (= 3.2.12)
62
- activerecord (= 3.2.12)
63
- activeresource (= 3.2.12)
64
- activesupport (= 3.2.12)
65
- bundler (~> 1.0)
66
- railties (= 3.2.12)
67
- railties (3.2.12)
68
- actionpack (= 3.2.12)
69
- activesupport (= 3.2.12)
70
- rack-ssl (~> 1.3.2)
51
+ rails (4.0.0)
52
+ actionmailer (= 4.0.0)
53
+ actionpack (= 4.0.0)
54
+ activerecord (= 4.0.0)
55
+ activesupport (= 4.0.0)
56
+ bundler (>= 1.3.0, < 2.0)
57
+ railties (= 4.0.0)
58
+ sprockets-rails (~> 2.0.0)
59
+ railties (4.0.0)
60
+ actionpack (= 4.0.0)
61
+ activesupport (= 4.0.0)
71
62
  rake (>= 0.8.7)
72
- rdoc (~> 3.4)
73
- thor (>= 0.14.6, < 2.0)
74
- rake (10.0.3)
75
- rdoc (3.12.2)
76
- json (~> 1.4)
63
+ thor (>= 0.18.1, < 2.0)
64
+ rake (10.1.0)
77
65
  rspec (2.7.0)
78
66
  rspec-core (~> 2.7.0)
79
67
  rspec-expectations (~> 2.7.0)
@@ -82,15 +70,21 @@ GEM
82
70
  rspec-expectations (2.7.0)
83
71
  diff-lcs (~> 1.1.2)
84
72
  rspec-mocks (2.7.0)
85
- sprockets (2.2.2)
73
+ sprockets (2.10.0)
86
74
  hike (~> 1.2)
87
75
  multi_json (~> 1.0)
88
76
  rack (~> 1.0)
89
77
  tilt (~> 1.1, != 1.3.0)
78
+ sprockets-rails (2.0.0)
79
+ actionpack (>= 3.0)
80
+ activesupport (>= 3.0)
81
+ sprockets (~> 2.8)
90
82
  sqlite3 (1.3.6)
91
- thor (0.17.0)
92
- tilt (1.3.5)
93
- treetop (1.4.12)
83
+ thor (0.18.1)
84
+ thread_safe (0.1.2)
85
+ atomic
86
+ tilt (1.4.1)
87
+ treetop (1.4.14)
94
88
  polyglot
95
89
  polyglot (>= 0.3.1)
96
90
  tzinfo (0.3.37)
@@ -1,18 +1,18 @@
1
1
  module ActsAsMetadata
2
- def acts_as_metadata(options={})
2
+ def acts_as_metadata options={}
3
3
  if options[:scope].is_a?(Symbol) && options[:scope].to_s !~ /_id$/
4
4
  scope = "#{options[:scope]}_id".to_sym
5
5
  else
6
6
  scope = nil
7
7
  end
8
8
 
9
- MetadataType.class_variable_set("@@metadata_scope", scope)
10
- class_variable_set("@@metadata_scope", scope)
9
+ MetadataType.class_variable_set "@@metadata_scope", scope
10
+ class_variable_set "@@metadata_scope", scope
11
11
  class_eval do
12
12
  serialize :metadata_cache
13
- has_many :metadata, :as => :model, :dependent => :destroy, :class_name => "Metadata::Metadata"
14
- before_create :create_accessors_and_save_metadata
15
- before_update :create_accessors_and_save_metadata
13
+ has_many :metadata, :as => :model, :dependent => :destroy, :class_name => "Metadata::Metadata", autosave: true
14
+ after_initialize :create_accessors
15
+ before_save :save_metadata
16
16
  validate :metadata_constraints
17
17
 
18
18
  def metadata_constraints
@@ -23,13 +23,13 @@ module ActsAsMetadata
23
23
  if value.is_a? Array
24
24
  errors.add(type.tag, I18n.t('acts_as_metadata.errors.blank')) if type.mandatory && (value.blank? || value.map(&:blank?).reduce(:&))
25
25
  value.each_with_index do |v, i|
26
- errors.add("#{type.tag}_#{i}", I18n.t('acts_as_metadata.errors.format')) if values.blank? && type.format.present? && v.present? && v.to_s !~ Regexp.new("^#{type.format}$")
27
- errors.add("#{type.tag}_#{i}", I18n.t('acts_as_metadata.errors.values')) if values.present? && v.present? && !values.include?(v)
26
+ errors.add("m_#{type.tag}_#{i}", I18n.t('acts_as_metadata.errors.format')) if values.blank? && type.format.present? && v.present? && v.to_s !~ Regexp.new("^#{type.format}$")
27
+ errors.add("m_#{type.tag}_#{i}", I18n.t('acts_as_metadata.errors.values')) if values.present? && v.present? && !values.include?(v)
28
28
  end
29
29
  else
30
- errors.add(type.tag, I18n.t('acts_as_metadata.errors.blank')) if type.mandatory && value.blank?
31
- errors.add(type.tag, I18n.t('acts_as_metadata.errors.format')) if values.blank? && type.format.present? && value.present? && value.to_s !~ Regexp.new("^#{type.format}$")
32
- errors.add(type.tag, I18n.t('acts_as_metadata.errors.values')) if values.present? && value.present? && !values.include?(value.to_s)
30
+ errors.add("m_#{type.tag}", I18n.t('acts_as_metadata.errors.blank')) if type.mandatory && value.blank?
31
+ errors.add("m_#{type.tag}", I18n.t('acts_as_metadata.errors.format')) if values.blank? && type.format.present? && value.present? && value.to_s !~ Regexp.new("^#{type.format}$")
32
+ errors.add("m_#{type.tag}", I18n.t('acts_as_metadata.errors.values')) if values.present? && value.present? && !values.include?(value.to_s)
33
33
  end
34
34
  end unless @skip_metadata_validation
35
35
  end
@@ -39,22 +39,8 @@ module ActsAsMetadata
39
39
  end
40
40
 
41
41
 
42
- def mass_assignment_authorizer(role = :default)
43
- super + metadata_types
44
- end
45
-
46
- def initialize(args=nil, options = {})
47
- scope = self.class.class_variable_get('@@metadata_scope') ? args[self.class.class_variable_get('@@metadata_scope')] : nil rescue nil
48
- types = MetadataType.model_types(model_name, scope)
49
- types.each do |type|
50
- create_accessor type
51
- end
52
- super
53
- end
54
-
55
- def update_attributes(attributes)
56
- create_accessors
57
- super
42
+ def mass_assignment_authorizer role = :default
43
+ super + metadata_types.map {|t| "m_#{t}"}
58
44
  end
59
45
 
60
46
  def create_accessors
@@ -64,76 +50,54 @@ module ActsAsMetadata
64
50
  end
65
51
 
66
52
  def create_accessor type
67
- class_eval "attr_accessor :#{type}"
68
- class_eval "def #{type}; get_metadata('#{type}'); end"
69
- class_eval "def #{type}=(value); set_metadata('#{type}', value); end"
53
+ class_eval "attr_accessor :m_#{type}"
54
+ class_eval "def m_#{type}; get_metadata('#{type}'); end"
55
+ class_eval "def m_#{type}=(value); set_metadata('#{type}', value); end"
70
56
  end
71
-
72
- def create_accessors_and_save_metadata
73
- create_accessors
74
- save_metadata
75
- end
76
-
77
- def method_missing(meth, *args, &block)
78
- begin
79
- super
80
- rescue NoMethodError
81
- name = meth.to_s
82
- if name =~ /^(.+)=$/
83
- name = name[0..-2]
84
- if metadata_types.include?(name)
85
- set_metadata(name, args.first)
86
- else
87
- raise
88
- end
89
- else
90
- if metadata_types.include?(name)
91
- get_metadata(name)
92
- else
93
- raise
94
- end
95
- end
96
- end
97
- end
98
57
 
99
58
  def metadata_scope
100
- self.class.class_variable_get('@@metadata_scope') ? self.send(self.class.class_variable_get('@@metadata_scope')) : nil
59
+ self.class.class_variable_get('@@metadata_scope') ? send(self.class.class_variable_get('@@metadata_scope')) : nil
101
60
  end
102
61
 
103
62
  def model_name
104
63
  self.class.name.underscore.to_sym
105
64
  end
106
65
 
66
+ def metadata_type name
67
+ MetadataType.type name, metadata_scope
68
+ end
69
+
107
70
  def metadata_types
108
- MetadataType.model_types(model_name, metadata_scope)
71
+ MetadataType.model_types model_name, metadata_scope
109
72
  end
110
73
 
111
- def self.metadata_types(scope=nil)
112
- MetadataType.model_types(self.name.underscore.to_sym, scope)
74
+ def self.metadata_types scope=nil
75
+ MetadataType.model_types name.underscore.to_sym, scope
113
76
  end
114
77
 
115
- def get_metadata(name)
116
- load_metadata unless metadata_cache.is_a?(Hash)
117
- metadata_cache[name].nil? ? MetadataType.type(name, metadata_scope).default : metadata_cache[name]
78
+ def get_metadata name
79
+ load_metadata unless metadata_cache.is_a? Hash
80
+ type = metadata_type name
81
+ metadata_cache[name].blank? ? type.type_cast(type.default) : metadata_cache[name]
118
82
  end
119
83
 
120
- def set_metadata(name, value)
121
- type = MetadataType.type(name, metadata_scope)
84
+ def set_metadata name, value
85
+ type = metadata_type name
122
86
  raise NoMethodError if type.nil?
123
- load_metadata unless metadata_cache.is_a?(Hash)
124
- self.metadata_cache[name] = type.type_cast(value) || type.type_cast(type.default)
125
- self.metadata_cache[name] = [self.metadata_cache[name]].compact if type.multiple && !self.metadata_cache[name].is_a?(Array)
126
- self.metadata_cache[name] = self.metadata_cache[name].first if !type.multiple && self.metadata_cache[name].is_a?(Array)
87
+ load_metadata unless metadata_cache.is_a? Hash
88
+ metadata_cache[name] = type.type_cast(value)
89
+ metadata_cache[name] = [metadata_cache[name]].compact if type.multiple && !metadata_cache[name].is_a?(Array)
90
+ metadata_cache[name] = type.type_cast(metadata_cache[name].first) if !type.multiple && metadata_cache[name].is_a?(Array)
127
91
  end
128
92
 
129
93
  def save_metadata
130
- Metadata::Metadata.delete_all(:model_type => self.class.name, :model_id => self.id) unless self.id.blank?
131
- self.metadata_types.each do |type_name|
132
- value = self.get_metadata(type_name)
94
+ metadata.map &:mark_for_destruction
95
+ metadata_types.each do |type_name|
96
+ value = get_metadata(type_name)
133
97
  if value.is_a? Array
134
- value.each {|v| self.metadata.build(:metadata_type => type_name, :value => v) unless v.nil? }
98
+ value.each {|v| metadata.build(metadata_type: type_name, value: v) unless v.nil? }
135
99
  else
136
- self.metadata.build(:metadata_type => type_name, :value => value) unless value.nil?
100
+ metadata.build(metadata_type: type_name, value: value) unless value.nil?
137
101
  end
138
102
  end
139
103
  end
@@ -1,22 +1,6 @@
1
1
  module Metadata
2
2
  class Metadata < ActiveRecord::Base
3
- default_scope :conditions => {:deleted_at => nil}, :order => 'created_at DESC'
4
3
  before_save :set_search_value
5
-
6
- def undelete
7
- self.deleted_at=nil
8
- self.save
9
- end
10
-
11
- def destroy(real = false)
12
- if real
13
- Metadata.unscoped.delete_all(:id => self.id)
14
- else
15
- self.run_callbacks(:destroy)
16
- self.update_attribute(:deleted_at, Time.now.utc)
17
- end
18
- end
19
-
20
4
  protected
21
5
  def set_search_value
22
6
  self.search_value = value.to_s[0,255] rescue nil
@@ -15,15 +15,8 @@ class MetadataType < ActiveRecord::Base
15
15
  after_create :set_default_values
16
16
  after_update :refresh_metadata
17
17
  before_destroy :refresh_metadata
18
- attr_accessor :models_json, :values_json, :default_json
19
- attr_accessible :tag, :name, :description, :models, :mandatory,
20
- :default, :format, :datatype, :values, :multiple,
21
- :models_json, :values_json, :default_json
22
- validates :tag, :presence => true, :format => {:with => /^[a-z]+[a-z0-9_]*$/},
23
- :exclusion => { :in => %w(format errors callback action categorie accept attributes host key layout notify open render save template type id parent_id lft rgt test select),
24
- :message => "this name is reserved"}
18
+ validates :tag, :presence => true, :format => {:with => /[a-z]+[a-z0-9_]*/}
25
19
  validates :datatype, :presence => true
26
- default_scope :conditions => {:deleted_at => nil}, :order => 'created_at DESC'
27
20
 
28
21
  def self.default
29
22
  self.new({
@@ -40,7 +33,7 @@ class MetadataType < ActiveRecord::Base
40
33
  end
41
34
 
42
35
  def type_cast(value)
43
- return value.map {|x| type_cast x } if value.is_a? Array
36
+ return value.delete_if(&:blank?).map {|x| type_cast x } if value.is_a? Array
44
37
  return nil if value.nil? && datatype != 'boolean'
45
38
  return value unless value.is_a?(String) || value.nil?
46
39
 
@@ -58,40 +51,15 @@ class MetadataType < ActiveRecord::Base
58
51
  end rescue nil
59
52
  end
60
53
 
61
- def models_json
62
- self.models ? self.models.to_json : [].to_json
63
- end
64
-
65
- def models_json=(value)
66
- self.models = JSON.parse(value) rescue []
67
- end
68
-
69
54
  def values= value
70
55
  value = value.invert.to_a if value.is_a?(Hash)
71
56
  super
72
57
  end
73
58
 
74
- def values_json
75
- self.values ? self.values.to_a.to_json : [].to_json
76
- end
77
-
78
- def values_json=(value)
79
- self.values = JSON.parse(value) rescue []
80
- values.each {|v| v.is_a?(Array) ? v.each(&:strip!) : v.strip! } if values.is_a? Array
81
- end
82
-
83
59
  def default
84
60
  type_cast(attributes['default'])
85
61
  end
86
62
 
87
- def default_json
88
- self.default.to_json
89
- end
90
-
91
- def default_json=(value)
92
- self.default = JSON.parse(value) rescue value[/"(.*)"/, 1]
93
- end
94
-
95
63
  def self.scheme_data(scope=nil)
96
64
  Rails.cache.fetch("metadata_scheme_#{@@metadata_scope}#{scope}_data", :expires_in => 60.minutes) do
97
65
  uncached do
@@ -1,3 +1,3 @@
1
1
  module ActsAsMetadata
2
- VERSION = "0.3.9"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -12,23 +12,23 @@ describe ActsAsMetadata do
12
12
 
13
13
  it 'has default metadata value' do
14
14
  mymodel = MyModel.create
15
- mymodel.sample.should == 'default'
15
+ mymodel.m_sample.should == 'default'
16
16
  end
17
17
 
18
18
  it 'set metadata value' do
19
19
  mymodel = MyModel.new
20
- mymodel.sample = 'test'
20
+ mymodel.m_sample = 'test'
21
21
  mymodel.save!
22
22
  mymodel = MyModel.last
23
- mymodel.sample.should == 'test'
23
+ mymodel.m_sample.should == 'test'
24
24
  end
25
25
 
26
26
  it 'updates metadata value' do
27
27
  mymodel = MyModel.last
28
- mymodel.sample = 'test2'
28
+ mymodel.m_sample = 'test2'
29
29
  mymodel.save!
30
30
  mymodel = MyModel.last
31
- mymodel.sample.should == 'test2'
31
+ mymodel.m_sample.should == 'test2'
32
32
  end
33
33
 
34
34
  it 'detete metadata when model deleted' do
@@ -43,8 +43,8 @@ describe ActsAsMetadata do
43
43
  mt.save!
44
44
  mymodel = MyModel.new
45
45
  mymodel.save
46
- mymodel.errors.include?(:sample).should == true
47
- mymodel.sample = 'wqwewew'
46
+ mymodel.errors.include?(:m_sample).should == true
47
+ mymodel.m_sample = 'wqwewew'
48
48
  mymodel.save
49
49
  mymodel.errors.count.should == 0
50
50
  end
@@ -55,10 +55,10 @@ describe ActsAsMetadata do
55
55
  mt.format = '[a-z]*'
56
56
  mt.save!
57
57
  mymodel = MyModel.new
58
- mymodel.sample = '12323'
58
+ mymodel.m_sample = '12323'
59
59
  mymodel.save
60
- mymodel.errors.include?(:sample).should == true
61
- mymodel.sample = 'wqwewew'
60
+ mymodel.errors.include?(:m_sample).should == true
61
+ mymodel.m_sample = 'wqwewew'
62
62
  mymodel.save
63
63
  mymodel.errors.count.should == 0
64
64
  end
@@ -68,10 +68,10 @@ describe ActsAsMetadata do
68
68
  mt.values = ['aaa', 'bbb']
69
69
  mt.save!
70
70
  mymodel = MyModel.new
71
- mymodel.sample = 'ccc'
71
+ mymodel.m_sample = 'ccc'
72
72
  mymodel.save
73
- mymodel.errors.include?(:sample).should == true
74
- mymodel.sample = 'bbb'
73
+ mymodel.errors.include?(:m_sample).should == true
74
+ mymodel.m_sample = 'bbb'
75
75
  mymodel.save
76
76
  mymodel.errors.count.should == 0
77
77
  end
@@ -84,7 +84,7 @@ describe ActsAsMetadata do
84
84
  mt.multiple = true
85
85
  mt.save!
86
86
  mymodel = MyModel.new
87
- mymodel.samplearray = ['aaa', 'bbb', 'ccc']
87
+ mymodel.m_samplearray = ['aaa', 'bbb', 'ccc']
88
88
  mymodel.save
89
89
  mymodel.errors.count.should == 0
90
90
  mymodel.metadata.count.should == 3
@@ -98,20 +98,20 @@ describe ActsAsMetadata do
98
98
  mt.multiple = true
99
99
  mt.save!
100
100
  mymodel = MyModel.new
101
- mymodel.samplearray = 'aaa'
101
+ mymodel.m_samplearray = 'aaa'
102
102
  mymodel.save
103
103
  mymodel.errors.count.should == 0
104
104
  mymodel.metadata.count.should == 1
105
- mymodel.samplearray.should == ['aaa']
105
+ mymodel.m_samplearray.should == ['aaa']
106
106
  end
107
107
 
108
108
  it 'loads multiple metadata correctly' do
109
109
  mymodel = MyModel.new
110
- mymodel.samplearray = ['aaa', 'bbb', 'ccc']
110
+ mymodel.m_samplearray = ['aaa', 'bbb', 'ccc']
111
111
  mymodel.save
112
112
  mymodel.errors.count.should == 0
113
113
  mymodel.metadata_cache = nil
114
- mymodel.samplearray.count.should == 3
114
+ mymodel.m_samplearray.count.should == 3
115
115
  end
116
116
 
117
117
  it 'checks presence validation for multiple metadata' do
@@ -121,8 +121,8 @@ describe ActsAsMetadata do
121
121
  mt.save!
122
122
  mymodel = MyModel.new
123
123
  mymodel.save
124
- mymodel.errors.include?(:samplearray).should == true
125
- mymodel.samplearray = ['abc']
124
+ mymodel.errors.include?(:m_samplearray).should == true
125
+ mymodel.m_samplearray = ['abc']
126
126
  mymodel.save
127
127
  mymodel.errors.count.should == 0
128
128
  end
@@ -133,10 +133,10 @@ describe ActsAsMetadata do
133
133
  mt.format = '[a-z]*'
134
134
  mt.save!
135
135
  mymodel = MyModel.new
136
- mymodel.samplearray = ['123', '456', 'ccc']
136
+ mymodel.m_samplearray = ['123', '456', 'ccc']
137
137
  mymodel.save
138
138
  mymodel.errors.count.should == 2
139
- mymodel.samplearray = ['aaa', 'bbb', 'ccc']
139
+ mymodel.m_samplearray = ['aaa', 'bbb', 'ccc']
140
140
  mymodel.save
141
141
  mymodel.errors.count.should == 0
142
142
  end
@@ -147,11 +147,22 @@ describe ActsAsMetadata do
147
147
  mt.values = ['aaa', 'bbb', 'ccc']
148
148
  mt.save!
149
149
  mymodel = MyModel.new
150
- mymodel.samplearray = ['ddd', 'eee', 'ccc']
150
+ mymodel.m_samplearray = ['ddd', 'eee', 'ccc']
151
151
  mymodel.save
152
152
  mymodel.errors.count.should == 2
153
- mymodel.samplearray = ['aaa', 'bbb', 'ccc']
153
+ mymodel.m_samplearray = ['aaa', 'bbb', 'ccc']
154
154
  mymodel.save
155
155
  mymodel.errors.count.should == 0
156
156
  end
157
+
158
+ it 'removes blank values from multiple metadata' do
159
+ mt = MetadataType.first
160
+ mt.mandatory = false
161
+ mt.values = nil
162
+ mt.save!
163
+ mymodel = MyModel.new
164
+ mymodel.m_samplearray = ['aaa', 'bbb', '']
165
+ mymodel.save
166
+ mymodel.m_samplearray.count.should == 2
167
+ end
157
168
  end
data/spec/spec_helper.rb CHANGED
@@ -10,7 +10,7 @@ ActiveRecord::Base.establish_connection(
10
10
  :database => "#{root}/db/acts_as_metadata.db"
11
11
  )
12
12
  ActionController::Base.cache_store = ActiveSupport::Cache::MemoryStore.new
13
- RAILS_CACHE = ActionController::Base.cache_store
13
+ Rails.cache = ActionController::Base.cache_store
14
14
 
15
15
  RSpec.configure do |config|
16
16
  # some (optional) config here
@@ -20,7 +20,6 @@ ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS 'my_models'")
20
20
  ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS 'metadata'")
21
21
  ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS 'metadata_types'")
22
22
  ActiveRecord::Base.connection.create_table(:my_models) do |t|
23
- t.integer :id
24
23
  t.string :name
25
24
  t.text :description
26
25
  t.text :metadata_cache
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-20 00:00:00.000000000 Z
12
+ date: 2013-08-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -102,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  version: '0'
103
103
  requirements: []
104
104
  rubyforge_project: acts_as_metadata
105
- rubygems_version: 1.8.24
105
+ rubygems_version: 1.8.25
106
106
  signing_key:
107
107
  specification_version: 3
108
108
  summary: Additional on-demand fields for ActiveRecord models