active_dynamic 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 06893fd851d9cb515ef8301c30c90225e095d4b9
4
- data.tar.gz: 176497655badfaac02c1fef76928d670f1709431
3
+ metadata.gz: 561ff35f6f9d9ccfd7925b6717bc139ab9d6ac10
4
+ data.tar.gz: c846f231edd33786e866070ca378f2734a4c80b4
5
5
  SHA512:
6
- metadata.gz: f15edb3f106ced0263bed6ca0d02c547a58d4e63f07fb5abdcf03913f0744e87f335fec9544055834f91e03fb3064a78409f63404ff28a61cc74f88d63985a05
7
- data.tar.gz: 5fd59c3c82d8585dc7a1c176e3524f8379d83e1475129710a434e18bf2921dce2a97a4f8d72dc375c18ae9494bdd292a4a70c8fca85e6337cb25ba843a4bce8e
6
+ metadata.gz: 789f970d6b430f58ba8898c40897c7a38f94ff4acb1346348451777a282f685555551efa608f022162f2058ad3083dabf2123246dcc83378d1dff4688746f068
7
+ data.tar.gz: e8132be0560081f460f658c9e08d52d1a1bc55e43c401e62bf17b07492d0117e709ac3b47e666cfd0b79e3f8ed11f1e36bdeb5345a766aa4de144286e15d4e32
data/README.md CHANGED
@@ -56,9 +56,12 @@ class ProfileAttributeProvider
56
56
  # You can get it from the configuration file, DB, etc., depending on your app logic
57
57
  def call
58
58
  [
59
- # attribute definition has to specify attribute name, datatype, and optionally default value
60
- ActiveDynamic::AttributeDefinition.new('age', datatype: ActiveDynamic::DataType::Integer, default_value: 18),
61
- ActiveDynamic::AttributeDefinition.new('biography', datatype: ActiveDynamic::DataType::Text)
59
+ # attribute definition has to specify attribute display name
60
+ ActiveDynamic::AttributeDefinition.new('biography'),
61
+
62
+ # Optionally you can provide datatype, system name, and default value.
63
+ # If system name is not specified, it will be generated automatically from display name
64
+ ActiveDynamic::AttributeDefinition.new('age', datatype: ActiveDynamic::DataType::Integer, default_value: 18)
62
65
  ]
63
66
  end
64
67
 
@@ -8,6 +8,11 @@ module ActiveDynamic
8
8
  @name = options[:system_name] || display_name.gsub(/[^a-zA-Z\s]/, ''.freeze).gsub(/\s+/, '_'.freeze)
9
9
  @datatype = options[:datatype]
10
10
  @value = options[:default_value]
11
+ @required = options[:required]
12
+ end
13
+
14
+ def required?
15
+ !!@required
11
16
  end
12
17
 
13
18
  end
@@ -27,14 +27,16 @@ module ActiveDynamic
27
27
  end
28
28
 
29
29
  def generate_accessors(fields)
30
- fields.map(&:name).each do |field|
30
+ fields.each do |field|
31
31
 
32
- define_singleton_method(field) do
33
- _custom_fields[field]
32
+ self.class.validates_presence_of(field.name) if field.required?
33
+
34
+ define_singleton_method(field.name) do
35
+ _custom_fields[field.name]
34
36
  end
35
37
 
36
- define_singleton_method("#{field}=") do |value|
37
- _custom_fields[field] = value.strip
38
+ define_singleton_method("#{field.name}=") do |value|
39
+ _custom_fields[field.name] = value.strip if value
38
40
  end
39
41
 
40
42
  end
@@ -6,9 +6,10 @@ class CreateActiveDynamicAttributesTable < ActiveRecord::Migration[4.2]
6
6
  t.string :customizable_type, limit: 50
7
7
 
8
8
  t.string :display_name, null: false
9
- t.string :name, null: false
9
+ t.string :name
10
10
  t.text :value
11
- t.integer :datatype, null: false
11
+ t.integer :datatype
12
+ t.boolean :required, null: false, default: false
12
13
 
13
14
  t.timestamps
14
15
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveDynamic
2
- VERSION = '0.4.0'
2
+ VERSION = '0.5.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_dynamic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Constantine Lebedev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-08 00:00:00.000000000 Z
11
+ date: 2017-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord