logical_model 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.6.1
data/lib/logical_model.rb CHANGED
@@ -52,7 +52,7 @@ require 'logical_model/cache'
52
52
  # RemoteResource#destroy
53
53
  class LogicalModel
54
54
  extend ActiveModel::Callbacks
55
- define_model_callbacks :create, :save, :update, :destroy, :initialize
55
+ define_model_callbacks :create, :save, :update, :destroy, :initialize, :new_nested
56
56
 
57
57
  include LogicalModel::Hydra
58
58
  include LogicalModel::ResponsesConfiguration
@@ -62,7 +62,6 @@ class LogicalModel
62
62
  include LogicalModel::ApiKey
63
63
  include LogicalModel::SafeLog
64
64
  include LogicalModel::Associations
65
- include LogicalModel::Cache
66
65
 
67
66
  # include ActiveModel Modules that are usefull
68
67
  extend ActiveModel::Naming
@@ -93,8 +93,11 @@ class LogicalModel
93
93
  define_method "#{association}_attributes=" do |key_attributes|
94
94
  array = []
95
95
  key_attributes.each do |attr_params|
96
+ clazz_name = attr_params['_type']
97
+ clazz = clazz_name.blank? ? attr_class : clazz_name.constantize
98
+
96
99
  attr_params.to_hash.symbolize_keys!
97
- array << attr_class.new(attr_params)
100
+ array << clazz.new(attr_params)
98
101
  end
99
102
  instance_variable_set("@#{association}", array)
100
103
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "logical_model"
8
- s.version = "0.6.0"
8
+ s.version = "0.6.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dwayne Macgowan"]
12
- s.date = "2014-06-25"
12
+ s.date = "2014-08-20"
13
13
  s.description = "LogicalModel allows to use a resource as a model. It is based on web presentation http://www.slideshare.net/ihower/serviceoriented-design-and-implement-with-rails3"
14
14
  s.email = "dwaynemac@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -1,11 +1,10 @@
1
- require './lib/logical_model/associations/has_many_keys.rb'
1
+ require './lib/logical_model'
2
2
 
3
3
  describe LogicalModel::Associations::HasManyKeys do
4
4
 
5
5
  describe "when included" do
6
6
  before do
7
- class Example
8
- include LogicalModel::Associations::HasManyKeys
7
+ class Example < LogicalModel
9
8
  end
10
9
  end
11
10
 
@@ -17,22 +16,18 @@ describe LogicalModel::Associations::HasManyKeys do
17
16
  describe ".has_many" do
18
17
  before do
19
18
  # has_many :items needs Item class
20
- class Item
21
- attr_accessor :example_id
22
- attr_accessor :name
23
- def initialize(attrs={})
24
- @example_id = attrs['example_id']
25
- @name = attrs['name']
26
- end
19
+ class Item < LogicalModel
20
+ attribute :name
21
+ belongs_to :example
27
22
  end
28
23
 
29
- class Example
30
- include LogicalModel::Associations::HasManyKeys
31
- has_many :items
24
+ class SpecialItem < LogicalModel
25
+ attribute :special_attribute
26
+ belongs_to :example
27
+ end
32
28
 
33
- def initialize(atrs={})
34
- self.items = atrs[:items] if atrs[:items]
35
- end
29
+ class Example < LogicalModel
30
+ has_many :items
36
31
 
37
32
  def json_root
38
33
  'example'
@@ -67,7 +62,6 @@ describe LogicalModel::Associations::HasManyKeys do
67
62
 
68
63
  describe "adds #association accessor" do
69
64
  before do
70
- debugger
71
65
  @e = Example.new(items: [Item.new()])
72
66
  end
73
67
  it "visible at instance" do
@@ -94,5 +88,12 @@ describe LogicalModel::Associations::HasManyKeys do
94
88
  end
95
89
  end
96
90
 
91
+ describe "when I initialize the has_many item using an extended class it should create the element using the correct class" do
92
+ it "should build has_many correctly" do
93
+ @example = Example.new({:items_attributes => [{"_type"=>"SpecialItem", "special_attribute"=>"test", "value"=>"123"}]})
94
+ @example.items.first.class.should == SpecialItem
95
+ end
96
+ end
97
+
97
98
  end
98
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logical_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.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: 2014-06-25 00:00:00.000000000 Z
12
+ date: 2014-08-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -393,7 +393,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
393
393
  version: '0'
394
394
  segments:
395
395
  - 0
396
- hash: -732207341
396
+ hash: -769037933
397
397
  required_rubygems_version: !ruby/object:Gem::Requirement
398
398
  none: false
399
399
  requirements: