comply 1.7.0 → 1.9.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: f2093d423f8fa4b54e49b7122e1ea13c93aa7b2a
4
- data.tar.gz: 87d69cb316312e9a4d34754e3ae2822c3b6468f6
3
+ metadata.gz: 6baf5ccbed26227f68924f4fd6e771212d5453f8
4
+ data.tar.gz: a9f6ad3d2403b258a0b6474c84ff106730424143
5
5
  SHA512:
6
- metadata.gz: 07d31a395dbf14779c2055b78feabdfce488b2a6fa9a40a52ed62317e40d119719fb4c5bd3a404f6899b42a72b7bfa71efeda7f8a6fce80954a67646427b90d2
7
- data.tar.gz: 4841e13268f817816b740765004280724a9289d20cfa8e5d857f7f8c70e997f67880d5bd1957b220e6abd0a8b162a56d4eeae01653a3dabd40f9c0bbc750967d
6
+ metadata.gz: d2d121eafee9f87871559812c2d5b77fba805a91adcbd2fbb8271799a1612afac796823ac4b67cf9ff2dee6e6627fb745f7ea846457e43930aa452eb24b72bcd
7
+ data.tar.gz: f2fc14f21bf83e8fb8dbd94dce17e8ec3ac6a92eb7db0df0fc1e7e18b6d1173e9f5b5e6f2649e9346b391b93a83b2659f81ee0a945a342e46e5e38266bb2dbc4
data/README.md CHANGED
@@ -68,6 +68,45 @@ Want success messages to add some personality to your forms? Add the message as
68
68
  <%= f.text_field :title, data: { validate: true, validate_success: "Sweet title yo!" } %>
69
69
  ```
70
70
 
71
+ ### Validation contexts
72
+ Supplementary reading on validation contexts:
73
+ - [ActiveRecord Validations :on](http://guides.rubyonrails.org/active_record_validations.html#on)
74
+ - [Also see api.rubyonrails.org](http://api.rubyonrails.org/classes/ActiveRecord/Validations.html#method-i-valid-3F)
75
+ - [Mastering Rails Validations: Contexts](http://blog.arkency.com/2014/04/mastering-rails-validations-contexts/)
76
+
77
+ By default, all validations run through Comply's `Comply::ValidationsController` will be in the `:comply` validation
78
+ context. This gives you the option to modify how your application runs its validations. The most common way to use
79
+ validation contexts, is when you want to skip a certain validation. Let's say we didn't want to check the uniqueness
80
+ of a particular attribute when asking Comply to validate a model. You would do this:
81
+
82
+ ```ruby
83
+ class SomeModel < ActiveRecord::Base
84
+ validates :my_attribute, uniqueness: true, unless: -> { validation_context == :comply }
85
+ # or perhaps you *ONLY* want to run the validation when in the :comply context
86
+ validates :other_attribute, numericality: true, on: :comply
87
+ end
88
+ ```
89
+
90
+ You now have the option to specify your own context if you inherit from `Comply::ValidationsController` if your
91
+ model has a specific business case for needing to run/not-run a set of validations for a given context.
92
+
93
+ ```ruby
94
+ class SomeController < Comply::ValidationsController
95
+ # ... snip
96
+ protected
97
+
98
+ def validation_context
99
+ :my_new_context
100
+ end
101
+ end
102
+
103
+ class SomeModel
104
+ validates :my_attribute, uniqueness: true, unless: -> { validation_context == :my_new_context }
105
+ end
106
+ ```
107
+
108
+ That's it!
109
+
71
110
  ### Event triggers
72
111
  You can change the jQuery event which triggers the input validation with the `data-validate-event` attribute.
73
112
  ```erb
@@ -14,7 +14,7 @@ class Comply.BaseValidatableForm
14
14
  @validate inputs: @inputs, submit: true
15
15
 
16
16
  validate: (options) ->
17
- $.get @validationRoute, @_params(), (response) =>
17
+ $.post @validationRoute, @_params(), (response) =>
18
18
  @_onValidate(response, options)
19
19
 
20
20
  if @_allSuccess(response)
@@ -12,11 +12,18 @@ module Comply
12
12
  end
13
13
 
14
14
  def show
15
+ ActiveSupport::Deprecation.warn('GET support going away: use POST to access this endpoint') if request.request_method == 'GET'
15
16
  @instance = validation_instance
16
- @instance.valid?(:comply)
17
+ @instance.valid?(validation_context)
17
18
  render json: { error: @instance.errors }
18
19
  end
19
20
 
21
+ protected
22
+
23
+ def validation_context
24
+ :comply
25
+ end
26
+
20
27
  private
21
28
 
22
29
  def validation_instance
@@ -1,5 +1,5 @@
1
1
  Comply::Engine.routes.draw do
2
- match '/validations' => 'validations#show', via: [:get]
2
+ match '/validations' => 'validations#show', via: [:get, :post]
3
3
  # allow CORS requests
4
4
  match 'validations', via: [:options], to: proc { [200, {}, ['']] }
5
5
  end
@@ -1,3 +1,3 @@
1
1
  module Comply
2
- VERSION = '1.7.0'
2
+ VERSION = '1.9.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comply
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - "@jacobaweiss"
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2016-08-19 00:00:00.000000000 Z
15
+ date: 2016-10-10 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: coffee-rails
@@ -128,8 +128,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  version: '0'
129
129
  requirements: []
130
130
  rubyforge_project:
131
- rubygems_version: 2.2.3
131
+ rubygems_version: 2.2.5
132
132
  signing_key:
133
133
  specification_version: 4
134
134
  summary: Inline validation of your ActiveRecord models via the AJAX internets
135
135
  test_files: []
136
+ has_rdoc: