act_form 0.2.0 → 0.3.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: 439172cc129e1aaa79e835d567a359f643010de0
4
- data.tar.gz: af5f2aa3c281e2f5a6b6d2f970700a9105aecd85
3
+ metadata.gz: 6c4d2de3c25f9064a56b848baf11d9fdab30c246
4
+ data.tar.gz: eefcd0907991528371683715f88b1ef6ce5184b9
5
5
  SHA512:
6
- metadata.gz: 5e069064c6100585124fa64e66594bbd0a055aaac0b31a809dd90d04ec1450cfb78c0627c0b55f96fc71573fa81f0a225bb721046a968aee56854e6fd63f47dd
7
- data.tar.gz: 18b92c9422e7c4585ada6002e5fe4ab0e9e3e9733864caebc7f02780abf3cea6881382bcb0980626a0d560a157be677a9bad139595b4037c95d73f3a47dc992a
6
+ metadata.gz: 34ce6c8aff8464fd388f744415293b621c2d1e6925b361f27b580fad371a73c330900abfb83f1aa95cef1b325e081d326bd368ed56262edad4da9d5100bdd6de
7
+ data.tar.gz: 51c1a884694b3c7a0873dcae073978f9377f52ca46a9e9f08b70363ca08ca739b575a736cc78b6fc5552b0459bdc75de87318c464761757a1b282ad74f5a7e84
data/CODE_OF_CONDUCT.md CHANGED
@@ -35,7 +35,7 @@ This code of conduct applies both within project spaces and in public spaces
35
35
  when an individual is representing the project or its community.
36
36
 
37
37
  Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
- reported by contacting a project maintainer at alex@qingju.com. All
38
+ reported by contacting a project maintainer at zshuaibin@gmail.com. All
39
39
  complaints will be reviewed and investigated and will result in a response that
40
40
  is deemed necessary and appropriate to the circumstances. Maintainers are
41
41
  obligated to maintain confidentiality with regard to the reporter of an
@@ -46,4 +46,4 @@ version 1.3.0, available at
46
46
  [http://contributor-covenant.org/version/1/3/0/][version]
47
47
 
48
48
  [homepage]: http://contributor-covenant.org
49
- [version]: http://contributor-covenant.org/version/1/3/0/
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
data/README.md CHANGED
@@ -31,8 +31,8 @@ form.valid? # => false
31
31
  form.errors.full_messages # => ["Name require a value"]
32
32
  ```
33
33
 
34
- #### Difference between then `required` and `validates_presence_of`
35
- `required` run before validation, it will cancel other validations if return false.
34
+ #### Difference between `required` and `validates_presence_of`
35
+ `required` will run before the validation, and it will cancel other validations if return false.
36
36
 
37
37
  ### form object
38
38
 
@@ -77,7 +77,7 @@ target = Class.new do
77
77
  end.new
78
78
 
79
79
  form = PhoneForm.new(phone: '12345678901')
80
- form.save(target)
80
+ form.save(target) # same as form.sync(target) and target.save
81
81
  target.phone # => '12345678901'
82
82
  target.saved # => true
83
83
  form.persisted? # => true
@@ -99,6 +99,7 @@ target.phone = '12345678901'
99
99
 
100
100
  form = PhoneForm.new
101
101
  form.init_by(target)
102
+ form.phone # => '12345678901'
102
103
  form.save # => true
103
104
  target.saved # => true
104
105
  ```
@@ -152,10 +153,13 @@ class CreateUserCommand < ActForm::Command
152
153
  combine UserForm
153
154
 
154
155
  def perform
155
- # User.create(attributes)
156
+ User.create(attributes)
156
157
  end
157
158
  end
158
159
 
160
+ CreateUserCommand.new
161
+ # => NoMethodError: private method `new' called for CreateUserCommand:Class
162
+
159
163
  command = CreateUserCommand.run(phone: '12345678901')
160
164
  if command.success?
161
165
  @user = command.result
@@ -18,10 +18,18 @@ module ActForm
18
18
  super attrs.select { |k, _| respond_to?("#{k}=") }
19
19
  end
20
20
 
21
+ def record=(record)
22
+ if record.respond_to?(:attributes)
23
+ @record = record
24
+ else
25
+ raise ArgumentError, 'Record must respond to attributes method!'
26
+ end
27
+ end
28
+
21
29
  # Record must respond_to attributes method
22
30
  def init_by(record, **attrs)
23
- @record = record
24
- _attrs = record.attributes.extract! *self.class.attribute_set.keys.map(&:to_s)
31
+ record = record
32
+ _attrs = @record.attributes.extract! *self.class.attribute_set.keys.map(&:to_s)
25
33
  assign_attributes _attrs.merge(attrs)
26
34
  end
27
35
 
@@ -1,6 +1,7 @@
1
1
  require 'active_support/concern'
2
2
 
3
3
  module ActForm
4
+ class RunError < StandardError; end
4
5
  module Runnable
5
6
  extend ActiveSupport::Concern
6
7
 
@@ -12,6 +13,10 @@ module ActForm
12
13
  def run(*args)
13
14
  new(*args).run
14
15
  end
16
+
17
+ def run!(*args)
18
+ new(*args).run!
19
+ end
15
20
  end
16
21
 
17
22
  def has_errors?
@@ -26,6 +31,16 @@ module ActForm
26
31
  self
27
32
  end
28
33
 
34
+ def run!
35
+ if valid?
36
+ @result = perform
37
+ @performed = true
38
+ result
39
+ else
40
+ raise RunError, 'Verification failed'
41
+ end
42
+ end
43
+
29
44
  def perform; end
30
45
 
31
46
  def success?
@@ -1,3 +1,3 @@
1
1
  module ActForm
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: act_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - zires
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-13 00:00:00.000000000 Z
11
+ date: 2017-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel