custom-attributes 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -15,15 +15,16 @@ module ActiveRecord
15
15
  end
16
16
 
17
17
  def has_custom_attributes(extra_field_types = {}, &block)
18
- raise "Block expected" unless block_given?
18
+ field_types = extra_field_types
19
+ field_types = self.defined_custom_field_types.merge(extra_field_types) if has_custom_attributes?
19
20
 
20
- field_definitions = CustomAttributeDefinitionHelper.new extra_field_types
21
- yield field_definitions
21
+ field_definitions = CustomAttributeDefinitionHelper.new field_types
22
+ yield field_definitions if block_given?
22
23
  defined_custom_attributes = field_definitions.defined_attributes
23
24
 
24
25
  if has_custom_attributes?
25
26
  write_inheritable_attribute(:defined_custom_attributes, self.defined_custom_attributes.deep_merge(defined_custom_attributes))
26
- write_inheritable_attribute(:defined_custom_field_types, self.extra_field_types.merge(extra_field_types))
27
+ write_inheritable_attribute(:defined_custom_field_types, field_types)
27
28
  else
28
29
  write_inheritable_attribute(:defined_custom_attributes, defined_custom_attributes)
29
30
  class_inheritable_reader(:defined_custom_attributes)
@@ -40,7 +40,7 @@ describe "Custom attributes of a person" do
40
40
  fields[0].value.should == "06 28 61 06 28"
41
41
  end
42
42
 
43
- it "should cache fields locally" do
43
+ it "should cache the 'born on' date locally" do
44
44
  @person.custom_attributes.add_date "Born on", Date.civil(1981, 5, 31)
45
45
  @person.save
46
46
  @person.born_on.should == Date.civil(1981,5, 31)
@@ -103,13 +103,19 @@ describe "Custom attributes of a product" do
103
103
  fields[0].value.should == 5.60
104
104
  end
105
105
 
106
- it "should cache not fields locally" do
106
+ it "should not cache width locally" do
107
107
  @product.custom_attributes.add_size "Width", 5.60
108
108
  @product.save
109
109
  @product.width.should == nil
110
110
  @product.custom_attributes.size_value_of(:width).should == 5.60
111
111
  end
112
112
 
113
+ it "should cache the details url locally" do
114
+ @product.custom_attributes.add_url "Details", "http://example.com/"
115
+ @product.save
116
+ @product.details_url.should == "http://example.com/"
117
+ end
118
+
113
119
  it "should rename labels" do
114
120
  @product.custom_attributes.add_size "Width", 5.60
115
121
 
data/spec/models.rb CHANGED
@@ -10,10 +10,14 @@ end
10
10
 
11
11
  class Product < ActiveRecord::Base
12
12
 
13
+ has_custom_attributes :url => :string
14
+
13
15
  has_custom_attributes :size => :float do |fields|
14
16
  fields.size :width, :height, :depth
17
+ fields.url :details, :on_model => { :details => :details_url }
15
18
  end
16
19
 
20
+
17
21
  end
18
22
 
19
23
  class Location < ActiveRecord::Base
data/spec/schema.rb CHANGED
@@ -34,6 +34,7 @@ ActiveRecord::Schema.define :version => 0 do
34
34
  t.string :name
35
35
  t.float :width
36
36
  t.float :height
37
+ t.string :details_url
37
38
  end
38
39
 
39
40
  create_table "locations", :force => true do |t|
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: custom-attributes
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matthijs Groen