datts_right 0.0.25 → 0.0.26

Sign up to get free protection for your applications and to get access to all the features.
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