packed_fields 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -5,8 +5,10 @@ module ActiveRecord
5
5
  def packed(options)
6
6
  column = options[:column] || :packed
7
7
  fields = options[:fields]
8
+ validation = options[:validation]
8
9
 
9
10
  serialize column, Hash
11
+
10
12
 
11
13
  fields.each do |field|
12
14
  define_method(field) {
@@ -23,8 +25,11 @@ module ActiveRecord
23
25
  write_attribute(column, { field => value })
24
26
  end
25
27
  }
28
+
29
+ validates field, validation.dup if validation
26
30
  end
27
31
  end
32
+
28
33
  end
29
34
 
30
35
  def self.included(base)
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{packed_fields}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["holysugar"]
@@ -4,7 +4,7 @@ require 'packed_fields'
4
4
  class ModelWithPacked < ActiveRecord::Base
5
5
  set_table_name 'mixins'
6
6
 
7
- packed :fields => [:foo, :bar]
7
+ packed :fields => [:foo, :bar], :validation => { :length => { :within => 0..5, :allow_nil => true } }
8
8
  end
9
9
 
10
10
  class CanSetColumnName < ActiveRecord::Base
@@ -20,15 +20,21 @@ describe ModelWithPacked do
20
20
 
21
21
  let(:model) { ModelWithPacked.new }
22
22
 
23
- describe "setting foo 'blah' and bar 1" do
23
+ describe "blank model" do
24
+
25
+ its(:foo) { should be_nil }
26
+ its(:bar) { should be_nil }
27
+ it { should be_valid }
28
+
29
+ end
30
+
31
+ describe "setting foo 'blah'" do
24
32
  subject {
25
33
  model.foo = "blah"
26
- model.bar = 1
27
34
  model.save
28
35
  model.reload
29
36
  }
30
37
  its(:foo) { should eq 'blah' }
31
- its(:bar) { should eq 1 }
32
38
 
33
39
  it "packed[:foo] should == 'blah'" do
34
40
  subject.packed[:foo].should eq 'blah'
@@ -39,6 +45,15 @@ describe ModelWithPacked do
39
45
  expect { model.foo = "blah" ; model.save }.to change { model.packed }
40
46
  end
41
47
 
48
+ describe "validation" do
49
+ describe "for example, validates length and bar is too long string" do
50
+ subject { model.bar = 'toolongstring'; model.valid?; model }
51
+ it { should be_invalid }
52
+ it "errors[:bar] exists" do
53
+ subject.errors[:bar].should be
54
+ end
55
+ end
56
+ end
42
57
 
43
58
  end
44
59
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: packed_fields
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - holysugar
@@ -92,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - ">="
94
94
  - !ruby/object:Gem::Version
95
- hash: -2402808375197587200
95
+ hash: 3194017773500699839
96
96
  segments:
97
97
  - 0
98
98
  version: "0"