OSDN Git Service

manifest list mg
[pettanr/pettanr.git] / lib / manifest / model / attribute.rb
1 require_dependency "manifest/model/attribute/source"
2 module Manifest
3   module ModelModule
4     class Attribute
5       include AttributeModule
6       attr :model, :attribute_name, :attribute_manifest, 
7         :type, :primary_key, :rules, :source
8       def initialize model, attribute_name, attribute_manifest
9         @model = model
10         @attribute_name = attribute_name
11         @attribute_manifest = attribute_manifest
12         self.set_default
13         self.init
14       end
15       
16       def set_default
17         raise "undefined type for models > #{self.model_name} > attributes > #{@attribute_name}\n" unless @attribute_manifest['type']
18         @attribute_manifest['primary_key'] ||= 0
19         @attribute_manifest['rules'] ||= {}
20       end
21       
22       def init
23         @type = @attribute_manifest['type']
24         @primary_key = @attribute_manifest['primary_key']
25         @rules = @attribute_manifest['rules']
26         if @attribute_manifest['source']
27           @source = SourceFactory.factory(self, @attribute_name, @attribute_manifest['source'])
28         end
29       end
30       
31       def model_name
32         @model.model_name
33       end
34       
35       def model_manifest
36         @model.model_manifest
37       end
38       
39     end
40     
41   end
42 end