datts_right 0.0.25 → 0.0.26

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.
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- datts_right (0.0.24)
4
+ datts_right (0.0.25)
5
5
  datts_right
6
+ rails (>= 3.0.0)
6
7
 
7
8
  GEM
8
9
  remote: http://rubygems.org/
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.25
1
+ 0.0.26
data/datts_right.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{datts_right}
8
- s.version = "0.0.25"
8
+ s.version = "0.0.26"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ramon Tayag"]
12
- s.date = %q{2011-04-26}
12
+ s.date = %q{2011-04-27}
13
13
  s.description = %q{Creates a separate table that saves all your dynamic attributes.}
14
14
  s.email = %q{ramon@tayag.net}
15
15
  s.extra_rdoc_files = [
@@ -118,13 +118,14 @@ module DattsRight
118
118
 
119
119
  def create_dynamic_attribute_definition_if_needed
120
120
  if dynamic_attributes_options[:definition]
121
- DynamicAttributeDefinition.create :attribute_defineable_id => self.id, :attribute_defineable_type => self.class.name
121
+ DynamicAttributeDefinition.create :attribute_defineable_id => self.id, :attribute_defineable_type => self.class.name, :definition => {}
122
122
  end
123
123
  end
124
124
 
125
125
  def add_definition(key, value)
126
126
  if key
127
127
  key = key.to_sym
128
+ #puts "add_definition(:#{key}, #{value.inspect}). current definition: #{definition.nil?}"
128
129
  if dynamic_attributes_options[:definition]
129
130
  if definition[key]
130
131
  raise AlreadyDefined, "#{key} is already defined"
@@ -153,14 +154,14 @@ module DattsRight
153
154
  #puts "#{v} IS a hash"
154
155
  add_definition k, v
155
156
  else # v is not a hash; item is like {"name"=>"A key", "attr_key"=>"a_key"}, {"name"=>"B key", "attr_key"=>"b_key"}
156
- #puts "#{v} is not a hash"
157
- #puts "item is: #{item.inspect}. item.first: #{item.first.inspect}"
158
- item.symbolize_keys! # {:name=>"A key", :description=>"asd", :attr_key=>"a_key"}
157
+ # Sometimes the item is a ActiveRecord::HashWithIndifferentAccess, which doesn't have the method symbolize_keys!, so we do it manually
158
+ #item = item.symbolize_keys # {:name=>"A key", :description=>"asd", :attr_key=>"a_key"}
159
159
  #puts "item is symbolized: #{item.inspect}"
160
- attr_key = item.delete(:attr_key)
160
+ attr_key = item.delete("attr_key")
161
161
  #puts "This is the attr_key: #{attr_key}"
162
162
  if attr_key # we only want to work on it if there's an attr_key
163
163
  attr_key = attr_key.to_sym
164
+ #puts "Adding: :#{attr_key}, #{item.inspect}"
164
165
  add_definition(attr_key, item)
165
166
  end
166
167
  end
@@ -15,15 +15,22 @@ describe DattsRight, ".add_definitions(hash)" do
15
15
  it "should accept 'flat' hashes in an array (straight from a form)" do
16
16
  # [{"name"=>"A key", "description"=>"asd", "attr_key"=>"a_key"}, {"name"=>"A key", "description"=>"asd", "attr_key"=>"b_key"}]
17
17
  c = Category.create
18
- c.should_receive(:add_definition).with(:a_key, {:name=>"A key"})
19
- c.should_receive(:add_definition).with(:b_key, {:name=>"B key"})
18
+ c.should_receive(:add_definition).with(:a_key, {"name"=>"A key"})
19
+ c.should_receive(:add_definition).with(:b_key, {"name"=>"B key"})
20
20
  c.add_definitions({"name"=>"A key", "attr_key"=>"a_key"}, {"name"=>"B key", "attr_key"=>"b_key"})
21
21
  c = Category.create
22
- c.should_receive(:add_definition).with(:a_key, {:name=>"A key"})
23
- c.should_receive(:add_definition).with(:b_key, {:name=>"B key"})
22
+ c.should_receive(:add_definition).with(:a_key, {"name"=>"A key"})
23
+ c.should_receive(:add_definition).with(:b_key, {"name"=>"B key"})
24
24
  c.add_definitions([{"name"=>"A key", "attr_key"=>"a_key"}, {"name"=>"B key", "attr_key"=>"b_key"}])
25
25
  end
26
26
 
27
+ # HashWithIndifferentAccess is something Rails seems to use for the params hash
28
+ it "should work with HashWithIndifferentAccess" do
29
+ hash = ActiveSupport::HashWithIndifferentAccess.new("name"=>"A key", "attr_key"=>"a_key")
30
+ c = Category.create
31
+ lambda {c.add_definitions(hash)}.should_not raise_error(NoMethodError)
32
+ end
33
+
27
34
  it "should not explode if nil is passed" do
28
35
  lambda {Category.create.add_definitions(nil)}.should_not raise_error(NoMethodError)
29
36
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datts_right
3
3
  version: !ruby/object:Gem::Version
4
- hash: 45
4
+ hash: 43
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 25
10
- version: 0.0.25
9
+ - 26
10
+ version: 0.0.26
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ramon Tayag
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-26 00:00:00 +08:00
18
+ date: 2011-04-27 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency