custom_fields 2.12.1 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +4 -5
  4. data/lib/custom_fields/extensions/active_support.rb +22 -23
  5. data/lib/custom_fields/extensions/carrierwave.rb +9 -40
  6. data/lib/custom_fields/extensions/mongoid/association/referenced/has_many.rb +49 -0
  7. data/lib/custom_fields/extensions/mongoid/association/referenced/has_one.rb +17 -0
  8. data/lib/custom_fields/extensions/mongoid/association/relatable.rb +30 -0
  9. data/lib/custom_fields/extensions/mongoid/criteria/queryable/smash.rb +3 -6
  10. data/lib/custom_fields/extensions/mongoid/document.rb +4 -8
  11. data/lib/custom_fields/extensions/mongoid/factory.rb +7 -9
  12. data/lib/custom_fields/extensions/mongoid/fields/i18n.rb +17 -17
  13. data/lib/custom_fields/extensions/mongoid/fields/localized.rb +21 -21
  14. data/lib/custom_fields/extensions/mongoid/fields.rb +4 -7
  15. data/lib/custom_fields/extensions/mongoid/validatable/collection_size.rb +86 -0
  16. data/lib/custom_fields/extensions/mongoid/{validations → validatable}/macros.rb +3 -2
  17. data/lib/custom_fields/extensions/origin/smash.rb +4 -5
  18. data/lib/custom_fields/field.rb +39 -36
  19. data/lib/custom_fields/source.rb +46 -44
  20. data/lib/custom_fields/target.rb +11 -12
  21. data/lib/custom_fields/target_helpers.rb +21 -23
  22. data/lib/custom_fields/types/belongs_to.rb +6 -20
  23. data/lib/custom_fields/types/boolean.rb +5 -12
  24. data/lib/custom_fields/types/color.rb +4 -12
  25. data/lib/custom_fields/types/date.rb +20 -22
  26. data/lib/custom_fields/types/date_time.rb +16 -18
  27. data/lib/custom_fields/types/default.rb +16 -24
  28. data/lib/custom_fields/types/email.rb +6 -13
  29. data/lib/custom_fields/types/file.rb +26 -35
  30. data/lib/custom_fields/types/float.rb +10 -13
  31. data/lib/custom_fields/types/has_many.rb +12 -16
  32. data/lib/custom_fields/types/integer.rb +10 -13
  33. data/lib/custom_fields/types/json.rb +18 -29
  34. data/lib/custom_fields/types/many_to_many.rb +14 -19
  35. data/lib/custom_fields/types/money.rb +34 -35
  36. data/lib/custom_fields/types/password.rb +19 -23
  37. data/lib/custom_fields/types/relationship_default.rb +4 -16
  38. data/lib/custom_fields/types/select.rb +43 -51
  39. data/lib/custom_fields/types/string.rb +5 -13
  40. data/lib/custom_fields/types/tags.rb +11 -11
  41. data/lib/custom_fields/types/text.rb +4 -16
  42. data/lib/custom_fields/version.rb +4 -2
  43. data/lib/custom_fields.rb +16 -16
  44. metadata +38 -38
  45. data/lib/custom_fields/extensions/mongoid/relations/options.rb +0 -19
  46. data/lib/custom_fields/extensions/mongoid/relations/referenced/in.rb +0 -18
  47. data/lib/custom_fields/extensions/mongoid/relations/referenced/many.rb +0 -30
  48. data/lib/custom_fields/extensions/mongoid/validations/collection_size.rb +0 -43
@@ -1,30 +0,0 @@
1
- module Mongoid #:nodoc:
2
- module Relations #:nodoc:
3
- module Referenced #:nodoc:
4
-
5
- # This class defines the behaviour for all relations that are a
6
- # one-to-many between documents in different collections.
7
- class Many < Relations::Many
8
-
9
- def build_with_custom_fields(attributes = {}, type = nil)
10
- if base.respond_to?(:custom_fields_for?) && base.custom_fields_for?(relation_metadata.name)
11
- # all the information about how to build the custom class are stored here
12
- recipe = base.custom_fields_recipe_for(relation_metadata.name)
13
- attributes ||= {}
14
- attributes.merge!(custom_fields_recipe: recipe)
15
- # build the class with custom_fields for the first time
16
- type = relation_metadata.klass.klass_with_custom_fields(recipe)
17
- end
18
- build_without_custom_fields(attributes, type)
19
- end
20
-
21
- alias_method :build_without_custom_fields, :build
22
- alias_method :build, :build_with_custom_fields
23
-
24
- # new should point to the new build method
25
- alias :new :build_with_custom_fields
26
- end
27
-
28
- end
29
- end
30
- end
@@ -1,43 +0,0 @@
1
- module Mongoid
2
- module Validations
3
-
4
- # Validates that the specified collections do or do not match a certain
5
- # size.
6
- #
7
- # @example Set up the collection size validator.
8
- #
9
- # class Person
10
- # include Mongoid::Document
11
- # has_many :addresses
12
- #
13
- # validates_collection_size_of :addresses, in: 1..10
14
- # end
15
- class CollectionSizeValidator < Mongoid::Validatable::LengthValidator
16
-
17
- def validate_each_with_collection(record, attribute, value)
18
- value = collection_to_size(record, attribute)
19
-
20
- self.validate_each_without_collection(record, attribute, value)
21
- end
22
-
23
- alias_method :validate_each_without_collection, :validate_each
24
- alias_method :validate_each, :validate_each_with_collection
25
-
26
- private
27
-
28
- def collection_to_size(record, attribute)
29
- relation = record.relations[attribute.to_s]
30
-
31
- source = case relation.macro
32
- when :embeds_many, :has_many
33
- record.send(attribute)
34
- when :has_and_belongs_to_many
35
- record.send(relation.key.to_sym)
36
- end
37
-
38
- OpenStruct.new(length: source.try(:size) || 0)
39
- end
40
-
41
- end
42
- end
43
- end