aws-sdk 1.8.5 → 1.9.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.
- checksums.yaml +7 -0
- data/.yardopts +1 -0
- data/README.rdoc +8 -0
- data/lib/aws-sdk.rb +39 -35
- data/lib/aws/api_config/CloudFront-2012-07-01.yml +2398 -0
- data/lib/aws/api_config/DirectConnect-2012-10-25.yml +475 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +8 -0
- data/lib/aws/api_config/DynamoDB-2012-08-10.yml +1516 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2 -2
- data/lib/aws/auto_scaling.rb +44 -44
- data/lib/aws/auto_scaling/activity.rb +1 -1
- data/lib/aws/auto_scaling/activity_collection.rb +14 -15
- data/lib/aws/auto_scaling/client.rb +277 -277
- data/lib/aws/auto_scaling/config.rb +1 -1
- data/lib/aws/auto_scaling/group.rb +35 -36
- data/lib/aws/auto_scaling/group_collection.rb +10 -10
- data/lib/aws/auto_scaling/group_options.rb +19 -19
- data/lib/aws/auto_scaling/instance.rb +27 -27
- data/lib/aws/auto_scaling/instance_collection.rb +10 -10
- data/lib/aws/auto_scaling/launch_configuration.rb +3 -3
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
- data/lib/aws/auto_scaling/notification_configuration.rb +2 -2
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +37 -38
- data/lib/aws/auto_scaling/scaling_policy.rb +3 -3
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +6 -6
- data/lib/aws/auto_scaling/scaling_policy_options.rb +8 -7
- data/lib/aws/auto_scaling/scheduled_action.rb +3 -3
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +28 -28
- data/lib/aws/auto_scaling/tag_collection.rb +30 -28
- data/lib/aws/cloud_formation.rb +95 -94
- data/lib/aws/cloud_formation/client.rb +136 -133
- data/lib/aws/cloud_formation/config.rb +1 -1
- data/lib/aws/cloud_formation/stack.rb +37 -37
- data/lib/aws/cloud_formation/stack_collection.rb +28 -27
- data/lib/aws/cloud_formation/stack_event.rb +9 -11
- data/lib/aws/cloud_formation/stack_output.rb +1 -1
- data/lib/aws/cloud_formation/stack_resource.rb +6 -6
- data/lib/aws/cloud_formation/stack_resource_collection.rb +11 -12
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +11 -11
- data/lib/aws/cloud_formation/stack_summary_collection.rb +39 -39
- data/lib/aws/cloud_front.rb +21 -21
- data/lib/aws/cloud_front/client.rb +853 -652
- data/lib/aws/cloud_front/request.rb +3 -0
- data/lib/aws/cloud_search.rb +22 -22
- data/lib/aws/cloud_search/client.rb +322 -315
- data/lib/aws/cloud_search/config.rb +1 -1
- data/lib/aws/cloud_watch.rb +39 -39
- data/lib/aws/cloud_watch/alarm.rb +55 -37
- data/lib/aws/cloud_watch/alarm_collection.rb +18 -18
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +2 -2
- data/lib/aws/cloud_watch/client.rb +360 -146
- data/lib/aws/cloud_watch/config.rb +1 -1
- data/lib/aws/cloud_watch/metric.rb +15 -15
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +17 -17
- data/lib/aws/cloud_watch/metric_collection.rb +16 -16
- data/lib/aws/cloud_watch/metric_statistics.rb +11 -11
- data/lib/aws/core.rb +243 -225
- data/lib/aws/core/async_handle.rb +13 -13
- data/lib/aws/core/cacheable.rb +14 -15
- data/lib/aws/core/client.rb +40 -15
- data/lib/aws/core/collection.rb +42 -46
- data/lib/aws/core/collection/with_limit_and_next_token.rb +1 -1
- data/lib/aws/core/collection/with_next_token.rb +1 -1
- data/lib/aws/core/configuration.rb +97 -133
- data/lib/aws/core/credential_providers.rb +16 -16
- data/lib/aws/core/data.rb +23 -23
- data/lib/aws/core/http/connection_pool.rb +348 -0
- data/lib/aws/core/http/net_http_handler.rb +17 -26
- data/lib/aws/core/http/patch.rb +102 -0
- data/lib/aws/core/http/request.rb +13 -19
- data/lib/aws/core/http/response.rb +2 -2
- data/lib/aws/core/lazy_error_classes.rb +17 -17
- data/lib/aws/core/log_formatter.rb +70 -104
- data/lib/aws/core/options/json_serializer.rb +1 -1
- data/lib/aws/core/options/validator.rb +4 -4
- data/lib/aws/core/page_result.rb +8 -8
- data/lib/aws/core/policy.rb +49 -49
- data/lib/aws/core/region.rb +72 -0
- data/lib/aws/core/region_collection.rb +106 -0
- data/lib/aws/core/resource.rb +5 -5
- data/lib/aws/core/response.rb +20 -17
- data/lib/aws/core/rest_request_builder.rb +4 -4
- data/lib/aws/core/service_interface.rb +24 -2
- data/lib/aws/core/signature/version_3.rb +2 -2
- data/lib/aws/core/uri_escape.rb +1 -1
- data/lib/aws/core/xml/frame_stack.rb +1 -1
- data/lib/aws/core/xml/grammar.rb +3 -4
- data/lib/aws/core/xml/sax_handlers/libxml.rb +2 -2
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +3 -3
- data/lib/aws/core/xml/sax_handlers/rexml.rb +5 -5
- data/lib/aws/core/xml/stub.rb +9 -9
- data/lib/aws/data_pipeline.rb +21 -21
- data/lib/aws/data_pipeline/client.rb +189 -133
- data/lib/aws/data_pipeline/config.rb +1 -1
- data/lib/aws/direct_connect.rb +74 -0
- data/lib/aws/direct_connect/client.rb +253 -0
- data/lib/aws/direct_connect/config.rb +18 -0
- data/lib/aws/direct_connect/errors.rb +22 -0
- data/lib/aws/direct_connect/request.rb +27 -0
- data/lib/aws/dynamo_db.rb +71 -69
- data/lib/aws/dynamo_db/attribute_collection.rb +53 -58
- data/lib/aws/dynamo_db/batch_get.rb +23 -23
- data/lib/aws/dynamo_db/batch_write.rb +43 -43
- data/lib/aws/dynamo_db/binary.rb +9 -9
- data/lib/aws/dynamo_db/client.rb +494 -509
- data/lib/aws/dynamo_db/client_base.rb +91 -0
- data/lib/aws/dynamo_db/client_v2.rb +825 -0
- data/lib/aws/dynamo_db/config.rb +1 -1
- data/lib/aws/dynamo_db/item.rb +10 -10
- data/lib/aws/dynamo_db/item_collection.rb +75 -75
- data/lib/aws/dynamo_db/table.rb +85 -85
- data/lib/aws/dynamo_db/table_collection.rb +13 -13
- data/lib/aws/ec2.rb +132 -142
- data/lib/aws/ec2/attachment.rb +31 -36
- data/lib/aws/ec2/attachment_collection.rb +1 -1
- data/lib/aws/ec2/availability_zone.rb +4 -4
- data/lib/aws/ec2/client.rb +2272 -2125
- data/lib/aws/ec2/config.rb +1 -1
- data/lib/aws/ec2/customer_gateway.rb +6 -6
- data/lib/aws/ec2/customer_gateway_collection.rb +6 -6
- data/lib/aws/ec2/dhcp_options.rb +3 -3
- data/lib/aws/ec2/dhcp_options_collection.rb +10 -10
- data/lib/aws/ec2/elastic_ip.rb +15 -15
- data/lib/aws/ec2/elastic_ip_collection.rb +11 -15
- data/lib/aws/ec2/export_task.rb +4 -4
- data/lib/aws/ec2/export_task_collection.rb +11 -11
- data/lib/aws/ec2/filtered_collection.rb +6 -8
- data/lib/aws/ec2/image.rb +46 -40
- data/lib/aws/ec2/image_collection.rb +44 -52
- data/lib/aws/ec2/instance.rb +64 -62
- data/lib/aws/ec2/instance_collection.rb +47 -50
- data/lib/aws/ec2/internet_gateway.rb +6 -6
- data/lib/aws/ec2/internet_gateway/attachment.rb +13 -13
- data/lib/aws/ec2/internet_gateway_collection.rb +3 -3
- data/lib/aws/ec2/key_pair.rb +3 -3
- data/lib/aws/ec2/key_pair_collection.rb +12 -12
- data/lib/aws/ec2/network_acl.rb +39 -39
- data/lib/aws/ec2/network_acl/association.rb +2 -2
- data/lib/aws/ec2/network_acl/entry.rb +22 -22
- data/lib/aws/ec2/network_acl_collection.rb +2 -2
- data/lib/aws/ec2/network_interface.rb +13 -4
- data/lib/aws/ec2/network_interface/attachment.rb +3 -3
- data/lib/aws/ec2/network_interface_collection.rb +5 -5
- data/lib/aws/ec2/permission_collection.rb +1 -1
- data/lib/aws/ec2/region.rb +6 -6
- data/lib/aws/ec2/region_collection.rb +1 -1
- data/lib/aws/ec2/reserved_instances_collection.rb +2 -2
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +2 -2
- data/lib/aws/ec2/resource_tag_collection.rb +5 -5
- data/lib/aws/ec2/route_table.rb +14 -14
- data/lib/aws/ec2/route_table/association.rb +22 -22
- data/lib/aws/ec2/route_table/route.rb +8 -8
- data/lib/aws/ec2/route_table_collection.rb +3 -3
- data/lib/aws/ec2/security_group.rb +39 -41
- data/lib/aws/ec2/security_group_collection.rb +19 -21
- data/lib/aws/ec2/snapshot.rb +3 -3
- data/lib/aws/ec2/snapshot_collection.rb +11 -12
- data/lib/aws/ec2/subnet.rb +2 -2
- data/lib/aws/ec2/subnet_collection.rb +17 -17
- data/lib/aws/ec2/tag_collection.rb +1 -1
- data/lib/aws/ec2/tagged_collection.rb +7 -7
- data/lib/aws/ec2/tagged_item.rb +10 -10
- data/lib/aws/ec2/volume.rb +16 -16
- data/lib/aws/ec2/volume_collection.rb +9 -12
- data/lib/aws/ec2/vpc.rb +6 -6
- data/lib/aws/ec2/vpc_collection.rb +10 -10
- data/lib/aws/ec2/vpn_connection.rb +4 -4
- data/lib/aws/ec2/vpn_connection/telemetry.rb +1 -1
- data/lib/aws/ec2/vpn_connection_collection.rb +6 -6
- data/lib/aws/ec2/vpn_gateway.rb +2 -2
- data/lib/aws/ec2/vpn_gateway_collection.rb +5 -5
- data/lib/aws/elastic_beanstalk.rb +12 -12
- data/lib/aws/elastic_beanstalk/client.rb +376 -368
- data/lib/aws/elastic_beanstalk/config.rb +1 -1
- data/lib/aws/elastic_transcoder.rb +5 -5
- data/lib/aws/elastic_transcoder/client.rb +283 -283
- data/lib/aws/elastic_transcoder/config.rb +1 -1
- data/lib/aws/elasticache.rb +12 -12
- data/lib/aws/elasticache/client.rb +484 -479
- data/lib/aws/elasticache/config.rb +1 -1
- data/lib/aws/elb.rb +23 -23
- data/lib/aws/elb/availability_zone_collection.rb +34 -34
- data/lib/aws/elb/backend_server_policy_collection.rb +24 -24
- data/lib/aws/elb/client.rb +153 -153
- data/lib/aws/elb/config.rb +1 -1
- data/lib/aws/elb/errors.rb +1 -1
- data/lib/aws/elb/instance_collection.rb +20 -25
- data/lib/aws/elb/listener.rb +3 -3
- data/lib/aws/elb/listener_collection.rb +8 -8
- data/lib/aws/elb/load_balancer.rb +15 -16
- data/lib/aws/elb/load_balancer_collection.rb +36 -24
- data/lib/aws/elb/load_balancer_policy.rb +1 -1
- data/lib/aws/elb/load_balancer_policy_collection.rb +5 -5
- data/lib/aws/emr.rb +28 -26
- data/lib/aws/emr/client.rb +165 -149
- data/lib/aws/emr/config.rb +1 -1
- data/lib/aws/emr/instance_group.rb +1 -1
- data/lib/aws/emr/instance_group_collection.rb +1 -1
- data/lib/aws/emr/job_flow.rb +27 -26
- data/lib/aws/emr/job_flow_collection.rb +34 -34
- data/lib/aws/errors.rb +7 -7
- data/lib/aws/glacier.rb +21 -21
- data/lib/aws/glacier/archive_collection.rb +2 -2
- data/lib/aws/glacier/client.rb +139 -140
- data/lib/aws/glacier/config.rb +1 -1
- data/lib/aws/glacier/vault.rb +2 -2
- data/lib/aws/glacier/vault_collection.rb +1 -1
- data/lib/aws/iam.rb +133 -144
- data/lib/aws/iam/access_key.rb +17 -17
- data/lib/aws/iam/access_key_collection.rb +22 -22
- data/lib/aws/iam/account_alias_collection.rb +2 -2
- data/lib/aws/iam/client.rb +429 -420
- data/lib/aws/iam/collection.rb +1 -1
- data/lib/aws/iam/config.rb +2 -2
- data/lib/aws/iam/group.rb +8 -8
- data/lib/aws/iam/group_collection.rb +16 -16
- data/lib/aws/iam/group_policy_collection.rb +6 -6
- data/lib/aws/iam/group_user_collection.rb +3 -3
- data/lib/aws/iam/mfa_device.rb +1 -1
- data/lib/aws/iam/mfa_device_collection.rb +9 -9
- data/lib/aws/iam/policy_collection.rb +4 -4
- data/lib/aws/iam/resource.rb +2 -2
- data/lib/aws/iam/server_certificate.rb +1 -1
- data/lib/aws/iam/server_certificate_collection.rb +15 -15
- data/lib/aws/iam/signing_certificate.rb +29 -29
- data/lib/aws/iam/signing_certificate_collection.rb +23 -23
- data/lib/aws/iam/user.rb +33 -38
- data/lib/aws/iam/user_collection.rb +27 -27
- data/lib/aws/iam/user_group_collection.rb +3 -3
- data/lib/aws/iam/user_policy_collection.rb +6 -6
- data/lib/aws/iam/virtual_mfa_device.rb +12 -12
- data/lib/aws/iam/virtual_mfa_device_collection.rb +4 -4
- data/lib/aws/import_export.rb +22 -21
- data/lib/aws/import_export/client.rb +47 -43
- data/lib/aws/ops_works.rb +5 -5
- data/lib/aws/ops_works/client.rb +484 -438
- data/lib/aws/ops_works/config.rb +1 -1
- data/lib/aws/rails.rb +34 -34
- data/lib/aws/rds.rb +18 -18
- data/lib/aws/rds/client.rb +1286 -1277
- data/lib/aws/rds/config.rb +1 -1
- data/lib/aws/rds/db_instance.rb +15 -4
- data/lib/aws/rds/db_snapshot.rb +1 -1
- data/lib/aws/record.rb +50 -24
- data/lib/aws/record/abstract_base.rb +52 -60
- data/lib/aws/record/attributes.rb +79 -79
- data/lib/aws/record/conversion.rb +1 -1
- data/lib/aws/record/dirty_tracking.rb +69 -67
- data/lib/aws/record/errors.rb +21 -21
- data/lib/aws/record/exceptions.rb +2 -2
- data/lib/aws/record/hash_model.rb +20 -21
- data/lib/aws/record/hash_model/attributes.rb +13 -15
- data/lib/aws/record/hash_model/finder_methods.rb +46 -46
- data/lib/aws/record/hash_model/scope.rb +31 -31
- data/lib/aws/record/model.rb +136 -136
- data/lib/aws/record/model/attributes.rb +57 -59
- data/lib/aws/record/model/finder_methods.rb +67 -67
- data/lib/aws/record/model/scope.rb +48 -49
- data/lib/aws/record/naming.rb +1 -1
- data/lib/aws/record/scope.rb +23 -19
- data/lib/aws/record/validations.rb +253 -271
- data/lib/aws/record/validator.rb +3 -3
- data/lib/aws/record/validators/acceptance.rb +1 -3
- data/lib/aws/record/validators/block.rb +1 -3
- data/lib/aws/record/validators/confirmation.rb +1 -3
- data/lib/aws/record/validators/count.rb +2 -4
- data/lib/aws/record/validators/exclusion.rb +2 -4
- data/lib/aws/record/validators/format.rb +2 -4
- data/lib/aws/record/validators/inclusion.rb +1 -3
- data/lib/aws/record/validators/length.rb +5 -7
- data/lib/aws/record/validators/method.rb +1 -3
- data/lib/aws/record/validators/numericality.rb +6 -8
- data/lib/aws/record/validators/presence.rb +1 -3
- data/lib/aws/redshift.rb +14 -14
- data/lib/aws/redshift/client.rb +596 -592
- data/lib/aws/redshift/config.rb +1 -1
- data/lib/aws/route_53.rb +30 -30
- data/lib/aws/route_53/change_batch.rb +7 -7
- data/lib/aws/route_53/client.rb +188 -152
- data/lib/aws/route_53/hosted_zone.rb +4 -4
- data/lib/aws/route_53/hosted_zone_collection.rb +7 -7
- data/lib/aws/route_53/resource_record_set.rb +10 -10
- data/lib/aws/route_53/resource_record_set_collection.rb +6 -6
- data/lib/aws/s3.rb +79 -79
- data/lib/aws/s3/access_control_list.rb +44 -36
- data/lib/aws/s3/acl_options.rb +51 -51
- data/lib/aws/s3/bucket.rb +146 -146
- data/lib/aws/s3/bucket_collection.rb +21 -21
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +81 -82
- data/lib/aws/s3/bucket_tag_collection.rb +4 -2
- data/lib/aws/s3/cipher_io.rb +5 -4
- data/lib/aws/s3/client.rb +89 -84
- data/lib/aws/s3/client/xml.rb +1 -1
- data/lib/aws/s3/config.rb +7 -1
- data/lib/aws/s3/cors_rule.rb +2 -0
- data/lib/aws/s3/cors_rule_collection.rb +42 -40
- data/lib/aws/s3/data_options.rb +16 -11
- data/lib/aws/s3/encryption_utils.rb +2 -2
- data/lib/aws/s3/errors.rb +7 -7
- data/lib/aws/s3/multipart_upload.rb +30 -33
- data/lib/aws/s3/multipart_upload_collection.rb +8 -6
- data/lib/aws/s3/object_collection.rb +35 -35
- data/lib/aws/s3/object_metadata.rb +6 -6
- data/lib/aws/s3/object_version.rb +4 -4
- data/lib/aws/s3/object_version_collection.rb +15 -15
- data/lib/aws/s3/policy.rb +2 -2
- data/lib/aws/s3/prefixed_collection.rb +9 -5
- data/lib/aws/s3/presigned_post.rb +39 -37
- data/lib/aws/s3/request.rb +11 -11
- data/lib/aws/s3/s3_object.rb +210 -200
- data/lib/aws/s3/tree.rb +25 -27
- data/lib/aws/s3/tree/child_collection.rb +3 -3
- data/lib/aws/s3/tree/leaf_node.rb +2 -2
- data/lib/aws/s3/tree/parent.rb +1 -1
- data/lib/aws/s3/website_configuration.rb +13 -13
- data/lib/aws/simple_db.rb +83 -83
- data/lib/aws/simple_db/attribute.rb +9 -7
- data/lib/aws/simple_db/attribute_collection.rb +22 -13
- data/lib/aws/simple_db/client.rb +107 -107
- data/lib/aws/simple_db/config.rb +7 -1
- data/lib/aws/simple_db/consistent_read_option.rb +5 -5
- data/lib/aws/simple_db/domain.rb +4 -2
- data/lib/aws/simple_db/domain_collection.rb +4 -4
- data/lib/aws/simple_db/domain_metadata.rb +5 -5
- data/lib/aws/simple_db/errors.rb +9 -9
- data/lib/aws/simple_db/item.rb +5 -5
- data/lib/aws/simple_db/item_collection.rb +83 -81
- data/lib/aws/simple_db/item_data.rb +4 -4
- data/lib/aws/simple_db/put_attributes.rb +3 -3
- data/lib/aws/simple_email_service.rb +140 -140
- data/lib/aws/simple_email_service/client.rb +82 -76
- data/lib/aws/simple_email_service/config.rb +1 -2
- data/lib/aws/simple_email_service/email_address_collection.rb +3 -3
- data/lib/aws/simple_email_service/identity.rb +8 -8
- data/lib/aws/simple_email_service/quotas.rb +8 -6
- data/lib/aws/simple_workflow.rb +106 -106
- data/lib/aws/simple_workflow/activity_task.rb +15 -22
- data/lib/aws/simple_workflow/activity_task_collection.rb +15 -15
- data/lib/aws/simple_workflow/activity_type.rb +23 -23
- data/lib/aws/simple_workflow/activity_type_collection.rb +23 -23
- data/lib/aws/simple_workflow/client.rb +1004 -956
- data/lib/aws/simple_workflow/config.rb +1 -1
- data/lib/aws/simple_workflow/count.rb +5 -5
- data/lib/aws/simple_workflow/decision_task.rb +129 -129
- data/lib/aws/simple_workflow/decision_task_collection.rb +59 -59
- data/lib/aws/simple_workflow/domain.rb +11 -11
- data/lib/aws/simple_workflow/domain_collection.rb +26 -26
- data/lib/aws/simple_workflow/history_event.rb +32 -32
- data/lib/aws/simple_workflow/history_event_collection.rb +3 -3
- data/lib/aws/simple_workflow/option_formatters.rb +5 -5
- data/lib/aws/simple_workflow/request.rb +1 -1
- data/lib/aws/simple_workflow/resource.rb +1 -1
- data/lib/aws/simple_workflow/type.rb +8 -8
- data/lib/aws/simple_workflow/type_collection.rb +15 -15
- data/lib/aws/simple_workflow/workflow_execution.rb +70 -72
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +130 -130
- data/lib/aws/simple_workflow/workflow_type.rb +27 -25
- data/lib/aws/simple_workflow/workflow_type_collection.rb +20 -20
- data/lib/aws/sns.rb +25 -25
- data/lib/aws/sns/client.rb +55 -55
- data/lib/aws/sns/config.rb +1 -1
- data/lib/aws/sns/policy.rb +1 -1
- data/lib/aws/sns/subscription.rb +7 -7
- data/lib/aws/sns/subscription_collection.rb +5 -5
- data/lib/aws/sns/topic.rb +49 -49
- data/lib/aws/sns/topic_collection.rb +2 -2
- data/lib/aws/sns/topic_subscription_collection.rb +5 -5
- data/lib/aws/sqs.rb +20 -20
- data/lib/aws/sqs/client.rb +78 -78
- data/lib/aws/sqs/config.rb +1 -1
- data/lib/aws/sqs/errors.rb +12 -12
- data/lib/aws/sqs/queue.rb +66 -67
- data/lib/aws/sqs/queue_collection.rb +16 -8
- data/lib/aws/sqs/received_message.rb +7 -6
- data/lib/aws/storage_gateway.rb +21 -21
- data/lib/aws/storage_gateway/client.rb +269 -202
- data/lib/aws/storage_gateway/config.rb +1 -1
- data/lib/aws/sts.rb +10 -8
- data/lib/aws/sts/client.rb +35 -35
- data/lib/aws/sts/session.rb +3 -3
- data/lib/aws/version.rb +1 -2
- metadata +23 -21
- data/lib/aws/core/autoloader.rb +0 -64
- data/lib/net/http/connection_pool.rb +0 -226
- data/lib/net/http/connection_pool/connection.rb +0 -189
- data/lib/net/http/connection_pool/session.rb +0 -126
|
@@ -10,36 +10,36 @@
|
|
|
10
10
|
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
module AWS
|
|
15
15
|
module Record
|
|
16
16
|
class Model
|
|
17
17
|
|
|
18
18
|
# The primary interface for finding records with {AWS::Record::Model}.
|
|
19
19
|
#
|
|
20
|
-
#
|
|
20
|
+
# ## Getting a Scope Object
|
|
21
21
|
#
|
|
22
22
|
# You should normally never need to construct a Scope object directly.
|
|
23
23
|
# Scope objects are returned from the AWS::Record::Model finder methods
|
|
24
|
-
# (e.g.
|
|
24
|
+
# (e.g. `shard`, `where`, `order`, `limit`, etc).
|
|
25
25
|
#
|
|
26
|
-
#
|
|
27
|
-
#
|
|
26
|
+
# books = Book.where(:author => 'John Doe')
|
|
27
|
+
# books.class #=> AWS::Record::Scope, not Array
|
|
28
28
|
#
|
|
29
|
-
# Scopes are also returned from methods defined with the
|
|
29
|
+
# Scopes are also returned from methods defined with the `scope` method.
|
|
30
30
|
#
|
|
31
|
-
#
|
|
31
|
+
# ## Chaining Scopes
|
|
32
32
|
#
|
|
33
33
|
# Scope objects represent a request, but do not actualy make a request
|
|
34
34
|
# until required. This allows you to chain requests
|
|
35
35
|
#
|
|
36
|
-
#
|
|
37
|
-
#
|
|
38
|
-
#
|
|
36
|
+
# # no request made by the following 2 statements
|
|
37
|
+
# books = Book.where(:author => 'John Doe')
|
|
38
|
+
# books = books.limit(10)
|
|
39
39
|
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
40
|
+
# books.each do |book|
|
|
41
|
+
# # yields up to 10 books
|
|
42
|
+
# end
|
|
43
43
|
#
|
|
44
44
|
# Each of the following methods returns a scope that can be chained.
|
|
45
45
|
#
|
|
@@ -48,24 +48,24 @@ module AWS
|
|
|
48
48
|
# * {#order}
|
|
49
49
|
# * {#limit}
|
|
50
50
|
#
|
|
51
|
-
#
|
|
51
|
+
# ## Terminating Scopes
|
|
52
52
|
#
|
|
53
53
|
# To terminate a scope you can enumerate it or call #first.
|
|
54
54
|
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
55
|
+
# # terminate a scope by enumerating
|
|
56
|
+
# Book.limit(10).each {|book| ... }
|
|
57
57
|
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
58
|
+
# # terminate a scope by getting the first value
|
|
59
|
+
# Book.where('author' => 'John Doe').first
|
|
60
60
|
#
|
|
61
61
|
class Scope < Record::Scope
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
# @private
|
|
64
64
|
def initialize base_class, options = {}
|
|
65
65
|
super
|
|
66
66
|
@options[:where] ||= []
|
|
67
67
|
end
|
|
68
|
-
|
|
68
|
+
|
|
69
69
|
def new attributes = {}
|
|
70
70
|
|
|
71
71
|
attributes = attributes.dup
|
|
@@ -75,11 +75,11 @@ module AWS
|
|
|
75
75
|
attributes.merge!(conditions.first)
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
|
-
|
|
78
|
+
|
|
79
79
|
super(attributes)
|
|
80
|
-
|
|
80
|
+
|
|
81
81
|
end
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
# Applies conditions to the scope that limit which records are returned.
|
|
84
84
|
# Only those matching all given conditions will be returned.
|
|
85
85
|
#
|
|
@@ -87,8 +87,8 @@ module AWS
|
|
|
87
87
|
# Specify a hash of conditions to query with. Multiple conditions
|
|
88
88
|
# are joined together with AND.
|
|
89
89
|
#
|
|
90
|
-
#
|
|
91
|
-
#
|
|
90
|
+
# Book.where(:author => 'John Doe', :softcover => true)
|
|
91
|
+
# # where `author` = `John Doe` AND `softcover` = `1`
|
|
92
92
|
#
|
|
93
93
|
# @param [Hash] conditions
|
|
94
94
|
#
|
|
@@ -96,7 +96,7 @@ module AWS
|
|
|
96
96
|
# A sql-like query fragment with optional placeholders and values.
|
|
97
97
|
# Placeholders are replaced with properly quoted values.
|
|
98
98
|
#
|
|
99
|
-
#
|
|
99
|
+
# Book.where('author = ?', 'John Doe')
|
|
100
100
|
#
|
|
101
101
|
# @param [String] conditions_string A sql-like where string with
|
|
102
102
|
# question mark placeholders. For each placeholder there should
|
|
@@ -111,46 +111,45 @@ module AWS
|
|
|
111
111
|
end
|
|
112
112
|
_with(:where => @options[:where] + [conditions])
|
|
113
113
|
end
|
|
114
|
-
|
|
115
|
-
# Specifies how to sort records returned.
|
|
114
|
+
|
|
115
|
+
# Specifies how to sort records returned.
|
|
116
116
|
#
|
|
117
|
-
#
|
|
118
|
-
#
|
|
119
|
-
#
|
|
120
|
-
#
|
|
117
|
+
# # enumerate books, starting with the most recently published ones
|
|
118
|
+
# Book.order(:published_at, :desc).each do |book|
|
|
119
|
+
# # ...
|
|
120
|
+
# end
|
|
121
121
|
#
|
|
122
122
|
# Only one order may be applied. If order is specified more than
|
|
123
123
|
# once the last one in the chain takes precedence:
|
|
124
124
|
#
|
|
125
|
-
#
|
|
126
|
-
#
|
|
127
|
-
#
|
|
128
|
-
# Book.where(:read => false).order(:author).order(:published_at)
|
|
125
|
+
# # books returned by this scope will be ordered by :published_at
|
|
126
|
+
# # and not :author.
|
|
127
|
+
# Book.where(:read => false).order(:author).order(:published_at)
|
|
129
128
|
#
|
|
130
129
|
# @param [String,Symbol] attribute_name The attribute to sort by.
|
|
131
130
|
# @param [:asc, :desc] order (:asc) The direct to sort.
|
|
132
131
|
def order attribute_name, order = :asc
|
|
133
132
|
_with(:order => [attribute_name, order])
|
|
134
133
|
end
|
|
135
|
-
|
|
134
|
+
|
|
136
135
|
# @private
|
|
137
136
|
private
|
|
138
137
|
def _each_object &block
|
|
139
|
-
|
|
138
|
+
|
|
140
139
|
items = _item_collection
|
|
141
|
-
|
|
140
|
+
|
|
142
141
|
items.select.each do |item_data|
|
|
143
142
|
obj = base_class.new(:shard => _shard)
|
|
144
143
|
obj.send(:hydrate, item_data.name, item_data.attributes)
|
|
145
144
|
yield(obj)
|
|
146
145
|
end
|
|
147
|
-
|
|
146
|
+
|
|
148
147
|
end
|
|
149
|
-
|
|
148
|
+
|
|
150
149
|
# Merges another scope with this scope. Conditions are added together
|
|
151
150
|
# and the limit and order parts replace those in this scope (if set).
|
|
152
151
|
# @param [Scope] scope A scope to merge with this one.
|
|
153
|
-
# @return [Scope] Returns a new scope with merged conditions and
|
|
152
|
+
# @return [Scope] Returns a new scope with merged conditions and
|
|
154
153
|
# overriden order and limit.
|
|
155
154
|
# @private
|
|
156
155
|
private
|
|
@@ -159,8 +158,8 @@ module AWS
|
|
|
159
158
|
scope.instance_variable_get('@options').each_pair do |opt_name,opt_value|
|
|
160
159
|
unless [nil, []].include?(opt_value)
|
|
161
160
|
if opt_name == :where
|
|
162
|
-
opt_value.each do |condition|
|
|
163
|
-
merged = merged.where(*condition)
|
|
161
|
+
opt_value.each do |condition|
|
|
162
|
+
merged = merged.where(*condition)
|
|
164
163
|
end
|
|
165
164
|
else
|
|
166
165
|
merged = merged.send(opt_name, *opt_value)
|
|
@@ -169,14 +168,14 @@ module AWS
|
|
|
169
168
|
end
|
|
170
169
|
merged
|
|
171
170
|
end
|
|
172
|
-
|
|
173
|
-
# Consumes a hash of options (e.g.
|
|
171
|
+
|
|
172
|
+
# Consumes a hash of options (e.g. `:where`, `:order` and `:limit`) and
|
|
174
173
|
# builds them onto the current scope, returning a new one.
|
|
175
174
|
# @param [Hash] options
|
|
176
175
|
# @option options :where
|
|
177
176
|
# @option options :order
|
|
178
177
|
# @option options [Integer] :limit
|
|
179
|
-
# @return [Scope] Returns a new scope with the hash of scope
|
|
178
|
+
# @return [Scope] Returns a new scope with the hash of scope
|
|
180
179
|
# options applied.
|
|
181
180
|
# @private
|
|
182
181
|
private
|
|
@@ -192,7 +191,7 @@ module AWS
|
|
|
192
191
|
end
|
|
193
192
|
scope
|
|
194
193
|
end
|
|
195
|
-
|
|
194
|
+
|
|
196
195
|
# Converts this scope object into an AWS::SimpleDB::ItemCollection
|
|
197
196
|
# @return [SimpleDB::ItemCollection]
|
|
198
197
|
# @private
|
|
@@ -206,7 +205,7 @@ module AWS
|
|
|
206
205
|
end
|
|
207
206
|
items
|
|
208
207
|
end
|
|
209
|
-
|
|
208
|
+
|
|
210
209
|
end
|
|
211
210
|
end
|
|
212
211
|
end
|
data/lib/aws/record/naming.rb
CHANGED
data/lib/aws/record/scope.rb
CHANGED
|
@@ -10,16 +10,16 @@
|
|
|
10
10
|
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
module AWS
|
|
15
15
|
module Record
|
|
16
16
|
|
|
17
17
|
# Base class for {AWS::Record::Model::Scope} and
|
|
18
18
|
# {AWS::Record::HashModel::Scope}.
|
|
19
19
|
class Scope
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
include Enumerable
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
# @param base_class A class that extends {AWS::Record::AbstractBase}.
|
|
24
24
|
# @param [Hash] options
|
|
25
25
|
# @option options :
|
|
@@ -34,7 +34,7 @@ module AWS
|
|
|
34
34
|
@options[:shard] = @options.delete(:domain) if @options[:domain]
|
|
35
35
|
|
|
36
36
|
end
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
# @return [Class] Returns the AWS::Record::Model extending class that
|
|
39
39
|
# this scope will find records for.
|
|
40
40
|
attr_reader :base_class
|
|
@@ -61,13 +61,13 @@ module AWS
|
|
|
61
61
|
_with(:shard => shard_name)
|
|
62
62
|
end
|
|
63
63
|
alias_method :domain, :shard
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
# @overload find(id)
|
|
66
66
|
# Finds and returns a single record by id. If no record is found
|
|
67
|
-
# with the given
|
|
67
|
+
# with the given `id`, then a RecordNotFound error will be raised.
|
|
68
68
|
# @param [String] id ID of the record to find.
|
|
69
69
|
# @return Returns the record.
|
|
70
|
-
#
|
|
70
|
+
#
|
|
71
71
|
# @overload find(:first, options = {})
|
|
72
72
|
# Returns the first record found. If no records were matched then
|
|
73
73
|
# nil will be returned (raises no exceptions).
|
|
@@ -79,9 +79,9 @@ module AWS
|
|
|
79
79
|
# Returns an enumerable Scope object that represents all matching
|
|
80
80
|
# records. No request is made to AWS until the scope is enumerated.
|
|
81
81
|
#
|
|
82
|
-
#
|
|
83
|
-
#
|
|
84
|
-
#
|
|
82
|
+
# Book.find(:all, :limit => 100).each do |book|
|
|
83
|
+
# # ...
|
|
84
|
+
# end
|
|
85
85
|
#
|
|
86
86
|
# @param [Symbol] mode (:all)
|
|
87
87
|
# @return [Scope] Returns an enumerable scope object.
|
|
@@ -96,7 +96,7 @@ module AWS
|
|
|
96
96
|
else
|
|
97
97
|
base_class.find_by_id(id_or_mode, :shard => scope._shard)
|
|
98
98
|
end
|
|
99
|
-
|
|
99
|
+
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
# @return [Integer] Returns the number of records that match the
|
|
@@ -115,10 +115,12 @@ module AWS
|
|
|
115
115
|
def first options = {}
|
|
116
116
|
_handle_options(options).find(:first)
|
|
117
117
|
end
|
|
118
|
-
|
|
118
|
+
|
|
119
119
|
# Limits the maximum number of total records to return when finding
|
|
120
120
|
# or counting. Returns a scope, does not make a request.
|
|
121
121
|
#
|
|
122
|
+
# @example
|
|
123
|
+
#
|
|
122
124
|
# books = Book.limit(100)
|
|
123
125
|
#
|
|
124
126
|
# @param [Integer] limit The maximum number of records to return.
|
|
@@ -126,16 +128,18 @@ module AWS
|
|
|
126
128
|
def limit limit
|
|
127
129
|
_with(:limit => limit)
|
|
128
130
|
end
|
|
129
|
-
|
|
131
|
+
|
|
130
132
|
# Yields once for each record matching the request made by this scope.
|
|
131
133
|
#
|
|
134
|
+
# @example
|
|
135
|
+
#
|
|
132
136
|
# books = Book.where(:author => 'me').order(:price, :asc).limit(10)
|
|
133
137
|
#
|
|
134
138
|
# books.each do |book|
|
|
135
139
|
# puts book.attributes.to_yaml
|
|
136
140
|
# end
|
|
137
141
|
#
|
|
138
|
-
# @yieldparam [Object] record
|
|
142
|
+
# @yieldparam [Object] record
|
|
139
143
|
def each &block
|
|
140
144
|
if block_given?
|
|
141
145
|
_each_object(&block)
|
|
@@ -149,26 +153,26 @@ module AWS
|
|
|
149
153
|
@options[:shard] || base_class.shard_name
|
|
150
154
|
end
|
|
151
155
|
alias_method :domain, :shard
|
|
152
|
-
|
|
156
|
+
|
|
153
157
|
# @private
|
|
154
158
|
private
|
|
155
159
|
def _each_object &block
|
|
156
160
|
raise NotImplementedError
|
|
157
161
|
end
|
|
158
|
-
|
|
162
|
+
|
|
159
163
|
# @private
|
|
160
164
|
private
|
|
161
165
|
def _with options
|
|
162
166
|
self.class.new(base_class, @options.merge(options))
|
|
163
167
|
end
|
|
164
|
-
|
|
168
|
+
|
|
165
169
|
# @private
|
|
166
170
|
private
|
|
167
171
|
def method_missing scope_name, *args
|
|
168
172
|
# @todo only proxy named scope methods
|
|
169
173
|
_merge_scope(base_class.send(scope_name, *args))
|
|
170
174
|
end
|
|
171
|
-
|
|
175
|
+
|
|
172
176
|
# Merges the one scope with the current scope, returning a 3rd.
|
|
173
177
|
# @param [Scope] scope
|
|
174
178
|
# @return [Scope]
|
|
@@ -178,7 +182,7 @@ module AWS
|
|
|
178
182
|
raise NotImplementedError
|
|
179
183
|
end
|
|
180
184
|
|
|
181
|
-
# Consumes a hash of options (e.g.
|
|
185
|
+
# Consumes a hash of options (e.g. `:shard`, +:limit) and returns
|
|
182
186
|
# a new scope with those applied.
|
|
183
187
|
# @return [Scope]
|
|
184
188
|
# @private
|
|
@@ -11,93 +11,78 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/record/validators/acceptance'
|
|
15
|
-
require 'aws/record/validators/block'
|
|
16
|
-
require 'aws/record/validators/confirmation'
|
|
17
|
-
require 'aws/record/validators/count'
|
|
18
|
-
require 'aws/record/validators/exclusion'
|
|
19
|
-
require 'aws/record/validators/format'
|
|
20
|
-
require 'aws/record/validators/inclusion'
|
|
21
|
-
require 'aws/record/validators/length'
|
|
22
|
-
require 'aws/record/validators/numericality'
|
|
23
|
-
require 'aws/record/validators/presence'
|
|
24
|
-
require 'aws/record/validators/method'
|
|
25
|
-
|
|
26
14
|
module AWS
|
|
27
15
|
module Record
|
|
28
16
|
|
|
29
17
|
# Validation methods to be used with subclasses of AWS::Record::Model.
|
|
30
18
|
#
|
|
31
|
-
#
|
|
19
|
+
# # General Usage
|
|
32
20
|
#
|
|
33
21
|
# All standard validation methods follow the same basic usage.
|
|
34
22
|
# Call the validation method followed by one more attribute names
|
|
35
23
|
# and then an optional hash of modifiers.
|
|
36
24
|
#
|
|
37
|
-
#
|
|
25
|
+
# class Book < AWS::Record::Model
|
|
38
26
|
#
|
|
39
|
-
#
|
|
27
|
+
# # ...
|
|
40
28
|
#
|
|
41
|
-
#
|
|
29
|
+
# validates_presence_of :title, :author
|
|
42
30
|
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
31
|
+
# validates_length_of :summary,
|
|
32
|
+
# :max => 500,
|
|
33
|
+
# :allow_nil => true,
|
|
34
|
+
# :allow_blank => true
|
|
47
35
|
#
|
|
48
|
-
#
|
|
36
|
+
# end
|
|
49
37
|
#
|
|
50
|
-
#
|
|
38
|
+
# # Conditional Validations
|
|
51
39
|
#
|
|
52
|
-
# Sometimes you only want to validate an attribute under certain
|
|
40
|
+
# Sometimes you only want to validate an attribute under certain
|
|
53
41
|
# conditions. To make this simple, all validation methods accept the
|
|
54
42
|
# following 3 options:
|
|
55
43
|
#
|
|
56
|
-
# *
|
|
57
|
-
# *
|
|
58
|
-
# *
|
|
44
|
+
# * `:on`
|
|
45
|
+
# * `:if`
|
|
46
|
+
# * `:unless`
|
|
59
47
|
#
|
|
60
48
|
# You may mix and match all 3 of the above options.
|
|
61
49
|
#
|
|
62
|
-
#
|
|
50
|
+
# ### Validate on :create or :update
|
|
63
51
|
#
|
|
64
52
|
# By default validations are run on create and update, but you can
|
|
65
53
|
# specify them to run for only create (initial save) or updates.
|
|
66
54
|
#
|
|
67
|
-
#
|
|
55
|
+
# validates_presence_of :created_at, :on => :create
|
|
56
|
+
#
|
|
57
|
+
# validates_presence_of :updated_at, :on => :update
|
|
68
58
|
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
# === Validate :if or :unless
|
|
59
|
+
# ### Validate :if or :unless
|
|
72
60
|
#
|
|
73
61
|
# Sometimes you have more complex requirements to determine if/when a
|
|
74
|
-
# validation should run.
|
|
62
|
+
# validation should run. `:if` and `:unless`: both accept either
|
|
75
63
|
# a method name or proc.
|
|
76
64
|
#
|
|
77
|
-
#
|
|
65
|
+
# class Person
|
|
78
66
|
#
|
|
79
|
-
#
|
|
67
|
+
# # ...
|
|
80
68
|
#
|
|
81
|
-
#
|
|
69
|
+
# validates_presence_of :job_title, :if => :employee?
|
|
82
70
|
#
|
|
83
|
-
#
|
|
84
|
-
#
|
|
71
|
+
# validates_presence_of :nickname, :if => lambda {|person|
|
|
72
|
+
# person.is_family? or person.is_friend? }
|
|
85
73
|
#
|
|
86
|
-
#
|
|
74
|
+
# end
|
|
87
75
|
#
|
|
88
|
-
#
|
|
76
|
+
# # Validating Virtual (Non-persisted) Attributes
|
|
89
77
|
#
|
|
90
78
|
# All of the validators can be used with configured attributes, but they
|
|
91
79
|
# can also be used with any attribute that has a setter and a getter.
|
|
92
80
|
#
|
|
93
|
-
#
|
|
94
|
-
#
|
|
95
|
-
#
|
|
81
|
+
# Class Book < AWS::Record::Model
|
|
82
|
+
# attr_accessor :title
|
|
83
|
+
# validates_presence_of :title
|
|
84
|
+
# end
|
|
96
85
|
#
|
|
97
|
-
# validates_presence_of :title
|
|
98
|
-
#
|
|
99
|
-
# end
|
|
100
|
-
#
|
|
101
86
|
module Validations
|
|
102
87
|
|
|
103
88
|
def self.extended base
|
|
@@ -115,38 +100,39 @@ module AWS
|
|
|
115
100
|
|
|
116
101
|
# Registers a validation method.
|
|
117
102
|
#
|
|
118
|
-
#
|
|
103
|
+
# validate :ensure_age_is_greater_than_shoe_size
|
|
119
104
|
#
|
|
120
|
-
#
|
|
121
|
-
#
|
|
122
|
-
#
|
|
105
|
+
# def ensure_age_is_greater_than_shoe_size
|
|
106
|
+
# unless age > shoe_size
|
|
107
|
+
# errors.add(:age, 'should be greater than your shoe size')
|
|
108
|
+
# end
|
|
123
109
|
# end
|
|
124
|
-
# end
|
|
125
110
|
#
|
|
126
111
|
# You can also pass a list of method names that should be called during
|
|
127
112
|
# validation.
|
|
128
113
|
#
|
|
129
|
-
#
|
|
114
|
+
# validate :some_complex_validation, :some_other_validation
|
|
130
115
|
#
|
|
131
116
|
# As with most other validation methods you can also pass a hash of
|
|
132
117
|
# options that affect when the named validation methods get called.
|
|
133
118
|
#
|
|
134
|
-
#
|
|
119
|
+
# validate :my_custom_validation, :unless => :new_record?
|
|
135
120
|
#
|
|
136
121
|
# @overload validate(*method_names, options = {})
|
|
137
122
|
# @param [Array<Symbol>] method_names A list of methods to call
|
|
138
|
-
# during validation.
|
|
123
|
+
# during validation.
|
|
139
124
|
# @param [Hash] options
|
|
140
125
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
141
126
|
# Valid values include:
|
|
142
|
-
#
|
|
143
|
-
# *
|
|
144
|
-
# *
|
|
127
|
+
#
|
|
128
|
+
# * `:save`
|
|
129
|
+
# * `:create`
|
|
130
|
+
# * `:update`
|
|
145
131
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
146
132
|
# to call. The validation will only be run if the return value is
|
|
147
|
-
# of the method/proc is true (e.g.
|
|
148
|
-
#
|
|
149
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
133
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
134
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
135
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
150
136
|
# proc to call. The validation will *not* be run if the return value
|
|
151
137
|
# is of the method/proc is false.
|
|
152
138
|
def validate *args
|
|
@@ -157,48 +143,48 @@ module AWS
|
|
|
157
143
|
# checkbox (like an EULA agreement or terms of service acknowledgement)
|
|
158
144
|
# is checked.
|
|
159
145
|
#
|
|
160
|
-
#
|
|
161
|
-
#
|
|
162
|
-
#
|
|
163
|
-
#
|
|
146
|
+
# class User < AWS::Record::Model
|
|
147
|
+
# boolean_attr :terms_of_service
|
|
148
|
+
# validates_acceptance_of :terms_of_service
|
|
149
|
+
# end
|
|
164
150
|
#
|
|
165
|
-
#
|
|
151
|
+
# ### Virtual Attributes
|
|
166
152
|
#
|
|
167
153
|
# If you choose to validate the acceptance of a non-existant attribute
|
|
168
154
|
# then a setter and a getter will be added automtically for you.
|
|
169
155
|
#
|
|
170
|
-
#
|
|
171
|
-
#
|
|
172
|
-
#
|
|
156
|
+
# class User < AWS::Record::Model
|
|
157
|
+
# validates_acceptance_of :terms_of_service
|
|
158
|
+
# end
|
|
173
159
|
#
|
|
174
|
-
#
|
|
175
|
-
#
|
|
176
|
-
#
|
|
160
|
+
# user = User.new
|
|
161
|
+
# user.respond_to?(:terms_of_service) #=> true
|
|
162
|
+
# user.respond_to?(:terms_of_service=) #=> true
|
|
177
163
|
#
|
|
178
|
-
#
|
|
164
|
+
# ### Accepted Values
|
|
179
165
|
#
|
|
180
|
-
# The default behavior for
|
|
181
|
-
# an error when the value is '1' or
|
|
182
|
-
# method defaults
|
|
166
|
+
# The default behavior for `validates_acceptance_of` is to add
|
|
167
|
+
# an error when the value is '1' or `true`. Also note, this validation
|
|
168
|
+
# method defaults `:allow_nil` to true.
|
|
183
169
|
#
|
|
184
|
-
# *
|
|
170
|
+
# * `nil` implies the field was omitted from the form and therefore
|
|
185
171
|
# should not be validated
|
|
186
172
|
#
|
|
187
|
-
#
|
|
188
|
-
#
|
|
189
|
-
#
|
|
173
|
+
# class User < AWS::Record::Model
|
|
174
|
+
# validates_acceptance_of :terms_of_service
|
|
175
|
+
# end
|
|
190
176
|
#
|
|
191
|
-
#
|
|
192
|
-
#
|
|
193
|
-
#
|
|
177
|
+
# u = User.new
|
|
178
|
+
# u.terms_of_service #=> nil
|
|
179
|
+
# u.valid? #=> true
|
|
194
180
|
#
|
|
195
181
|
# * '1' is the default value for most checkbox form helpers, and #
|
|
196
182
|
# therefore indicates an accepted value.
|
|
197
183
|
#
|
|
198
|
-
# *
|
|
199
|
-
# when you have your checkbox post its value to a
|
|
184
|
+
# * `true` is how boolean attributes typecast '1'. This is helpful
|
|
185
|
+
# when you have your checkbox post its value to a `:boolean_attr`.
|
|
200
186
|
#
|
|
201
|
-
#
|
|
187
|
+
# ### Multi-Valued Attributes
|
|
202
188
|
#
|
|
203
189
|
# This validator works only with single-valued attributes. If you need
|
|
204
190
|
# to validate that all of the values in a set are true, then use
|
|
@@ -212,24 +198,25 @@ module AWS
|
|
|
212
198
|
# @param [Hash] options
|
|
213
199
|
# @option options [mixed] :accpet Specify an additional accepted value.
|
|
214
200
|
#
|
|
215
|
-
#
|
|
201
|
+
# validates_acceptance_of :agree, :accept => 'yes'
|
|
216
202
|
#
|
|
217
203
|
# @option options [String] :message A custom error message. The default
|
|
218
|
-
#
|
|
204
|
+
# `:message` is "must be accepted".
|
|
219
205
|
# @option options [Boolean] :allow_nil (true) Skip validation if the
|
|
220
|
-
# attribute value is
|
|
206
|
+
# attribute value is `nil`.
|
|
221
207
|
# @option options [Boolean] :allow_blank (true) Skip validation if the
|
|
222
|
-
# attribute value is
|
|
208
|
+
# attribute value is `blank`.
|
|
223
209
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
224
210
|
# Valid values include:
|
|
225
|
-
#
|
|
226
|
-
# *
|
|
227
|
-
# *
|
|
211
|
+
#
|
|
212
|
+
# * `:save`
|
|
213
|
+
# * `:create`
|
|
214
|
+
# * `:update`
|
|
228
215
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
229
216
|
# to call. The validation will only be run if the return value is
|
|
230
|
-
# of the method/proc is true (e.g.
|
|
231
|
-
#
|
|
232
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
217
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
218
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
219
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
233
220
|
# proc to call. The validation will *not* be run if the return value
|
|
234
221
|
# is of the method/proc is false.
|
|
235
222
|
def validates_acceptance_of *args
|
|
@@ -239,53 +226,54 @@ module AWS
|
|
|
239
226
|
# Intended primarily for validating a form field was entered correctly
|
|
240
227
|
# by requiring it twice:
|
|
241
228
|
#
|
|
242
|
-
#
|
|
243
|
-
#
|
|
244
|
-
#
|
|
245
|
-
#
|
|
229
|
+
# Model:
|
|
230
|
+
# class User < AWS::Record::Model
|
|
231
|
+
# validates_confirmation_of :password, :if => :password_changed?
|
|
232
|
+
# end
|
|
246
233
|
#
|
|
247
|
-
#
|
|
248
|
-
#
|
|
249
|
-
#
|
|
234
|
+
# View:
|
|
235
|
+
# <%= password_field "user", "password" %>
|
|
236
|
+
# <%= password_field "user", "password_confirmation" %>
|
|
250
237
|
#
|
|
251
|
-
#
|
|
238
|
+
# ### Confirmation Value Accessors
|
|
252
239
|
#
|
|
253
|
-
# If your model does not have accessors for the confirmation value
|
|
240
|
+
# If your model does not have accessors for the confirmation value
|
|
254
241
|
# then they will be automatically added. In the example above
|
|
255
|
-
# the user class would have an
|
|
256
|
-
#
|
|
242
|
+
# the user class would have an `attr_accessor` for
|
|
243
|
+
# `:password_confirmation`.
|
|
257
244
|
#
|
|
258
|
-
#
|
|
245
|
+
# ### Conditional Validation
|
|
259
246
|
#
|
|
260
247
|
# Mostly commonly you only need to validate confirmation of an
|
|
261
|
-
# attribute when it has changed. It is therefore suggested to
|
|
262
|
-
# pass an
|
|
263
|
-
#
|
|
264
|
-
#
|
|
248
|
+
# attribute when it has changed. It is therefore suggested to
|
|
249
|
+
# pass an `:if` condition reflecting this:
|
|
250
|
+
#
|
|
251
|
+
# validates_confirmation_of :password, :if => :password_changed?
|
|
265
252
|
#
|
|
266
|
-
#
|
|
253
|
+
# ### Multi-Valued Attributes
|
|
267
254
|
#
|
|
268
255
|
# This validator works only with single-valued attributes.
|
|
269
256
|
# It should not be used on attributes that have array or set values.
|
|
270
257
|
#
|
|
271
|
-
# @note This validation method does not accept the
|
|
272
|
-
#
|
|
258
|
+
# @note This validation method does not accept the `:allow_nil` or the
|
|
259
|
+
# `:allow_blank` options.
|
|
273
260
|
#
|
|
274
261
|
# @overload validates_confirmation_of(*attributes, options = {}, &block)
|
|
275
262
|
# @param attributes A list of attribute names to validate.
|
|
276
263
|
# @param [Hash] options
|
|
277
264
|
# @option options [String] :message A custom error message. The default
|
|
278
|
-
#
|
|
265
|
+
# `:message` is "doesn't match confirmation".
|
|
279
266
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
280
267
|
# Valid values include:
|
|
281
|
-
#
|
|
282
|
-
# *
|
|
283
|
-
# *
|
|
268
|
+
#
|
|
269
|
+
# * `:save`
|
|
270
|
+
# * `:create`
|
|
271
|
+
# * `:update`
|
|
284
272
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
285
273
|
# to call. The validation will only be run if the return value is
|
|
286
|
-
# of the method/proc is true (e.g.
|
|
287
|
-
#
|
|
288
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
274
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
275
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
276
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
289
277
|
# proc to call. The validation will *not* be run if the return value
|
|
290
278
|
# is of the method/proc is false.
|
|
291
279
|
def validates_confirmation_of *args
|
|
@@ -294,63 +282,63 @@ module AWS
|
|
|
294
282
|
|
|
295
283
|
# Validates the number of values for a given attribute.
|
|
296
284
|
#
|
|
297
|
-
#
|
|
298
|
-
#
|
|
299
|
-
#
|
|
300
|
-
# whereas +validates_length_of: validates the length of each
|
|
285
|
+
# ### Length vs Count
|
|
286
|
+
#
|
|
287
|
+
# `validates_count_of` validates the number of attribute values,
|
|
288
|
+
# whereas +validates_length_of: validates the length of each
|
|
301
289
|
# attribute value instead.
|
|
302
290
|
#
|
|
303
291
|
# If you need to ensure each attribute value is a given length see
|
|
304
292
|
# {#validates_length_of} instead.
|
|
305
293
|
#
|
|
306
|
-
#
|
|
294
|
+
# ### Examples
|
|
307
295
|
#
|
|
308
296
|
# You can validate there are a certain number of values:
|
|
309
297
|
#
|
|
310
|
-
#
|
|
311
|
-
#
|
|
298
|
+
# validates_count_of :parents, :exactly => 2
|
|
299
|
+
#
|
|
312
300
|
# You can also specify a range:
|
|
313
301
|
#
|
|
314
|
-
#
|
|
302
|
+
# validates_count_of :tags, :within => (2..10)
|
|
315
303
|
#
|
|
316
304
|
# You can also specify min and max value seperately:
|
|
317
305
|
#
|
|
318
|
-
#
|
|
306
|
+
# validates_count_of :tags, :minimum => 2, :maximum => 10
|
|
319
307
|
#
|
|
320
|
-
#
|
|
308
|
+
# ### `nil` Values
|
|
321
309
|
#
|
|
322
|
-
# If you are validating an array or set that contains
|
|
323
|
-
# the
|
|
310
|
+
# If you are validating an array or set that contains `nil` values,
|
|
311
|
+
# the `nil` values are counted normally as 1 each.
|
|
324
312
|
#
|
|
325
313
|
# If you are validating a non-enuemrable attribute that only
|
|
326
314
|
# contains a single nil or other scalar value, then nil is
|
|
327
315
|
# counted as 0.
|
|
328
316
|
#
|
|
329
|
-
#
|
|
317
|
+
# ### Singular Attributes
|
|
330
318
|
#
|
|
331
319
|
# This validator is intended to for validating attributes that have
|
|
332
320
|
# an array or set of values. If used on an attribute that
|
|
333
|
-
# returns a scalar value (like
|
|
334
|
-
# always be 0 (for
|
|
321
|
+
# returns a scalar value (like `nil` or a string), the count will
|
|
322
|
+
# always be 0 (for `nil`) or 1 (for everything else).
|
|
335
323
|
#
|
|
336
|
-
# It is therefore recomended to use
|
|
337
|
-
# place of
|
|
324
|
+
# It is therefore recomended to use `:validates_presence_of` in
|
|
325
|
+
# place of `:validates_count_of` when working with single-valued
|
|
338
326
|
# attributes.
|
|
339
327
|
#
|
|
340
328
|
# @overload validates_count_of(*attributes, options = {}, &block)
|
|
341
329
|
# @param attributes A list of attribute names to validate.
|
|
342
330
|
# @param [Hash] options
|
|
343
|
-
# @option options [Integer] :exactly The exact number of values the
|
|
344
|
-
# attribute should have. If this validation option fails the
|
|
345
|
-
# error message specified by
|
|
346
|
-
# @option options [Range] :within An range of number of values to
|
|
331
|
+
# @option options [Integer] :exactly The exact number of values the
|
|
332
|
+
# attribute should have. If this validation option fails the
|
|
333
|
+
# error message specified by `:wrong_number` will be added.
|
|
334
|
+
# @option options [Range] :within An range of number of values to
|
|
347
335
|
# accept. If the attribute has a number of values outside this range
|
|
348
|
-
# then the
|
|
336
|
+
# then the `:too_many` or `:too_few` error message will be added.
|
|
349
337
|
# @option options [Integer] :minimum The minimum number of values
|
|
350
|
-
# the attribute should have. If it has fewer, the
|
|
338
|
+
# the attribute should have. If it has fewer, the `:too_few` error
|
|
351
339
|
# message will be added.
|
|
352
340
|
# @option options [Integer] :maximum The maximum number of values
|
|
353
|
-
# the attribute should have. If it has more, the
|
|
341
|
+
# the attribute should have. If it has more, the `:too_many` error
|
|
354
342
|
# message will be added.
|
|
355
343
|
# @option options [String] :too_many An error message added
|
|
356
344
|
# when the attribute has too many values. Defaults to
|
|
@@ -360,18 +348,18 @@ module AWS
|
|
|
360
348
|
# <code>"has too few values (minimum is %{minimum})"</code>
|
|
361
349
|
# @option options [String] :wrong_number An error message
|
|
362
350
|
# added when the number of attribute values does not match
|
|
363
|
-
# the
|
|
351
|
+
# the `:exactly` option. Defaults to <code>"has the wrong
|
|
364
352
|
# number of values (should have exactly %{exactly}"</code>
|
|
365
353
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
366
354
|
# Valid values include:
|
|
367
|
-
# *
|
|
368
|
-
# *
|
|
369
|
-
# *
|
|
355
|
+
# * `:save`
|
|
356
|
+
# * `:create`
|
|
357
|
+
# * `:update`
|
|
370
358
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
371
359
|
# to call. The validation will only be run if the return value is
|
|
372
|
-
# of the method/proc is true (e.g.
|
|
373
|
-
#
|
|
374
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
360
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
361
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
362
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
375
363
|
# proc to call. The validation will *not* be run if the return value
|
|
376
364
|
# is of the method/proc is false.
|
|
377
365
|
def validates_count_of *args
|
|
@@ -380,35 +368,35 @@ module AWS
|
|
|
380
368
|
|
|
381
369
|
# Adds a block validator that is called during record validation.
|
|
382
370
|
#
|
|
383
|
-
#
|
|
371
|
+
# class ExampleClass < AWS::Record::Model
|
|
384
372
|
#
|
|
385
|
-
#
|
|
373
|
+
# string_attr :name
|
|
386
374
|
#
|
|
387
|
-
#
|
|
388
|
-
#
|
|
389
|
-
#
|
|
375
|
+
# validates_each(:name) do |record, attribute_name, value|
|
|
376
|
+
# if value == 'John Doe'
|
|
377
|
+
# record.errors.add(attr_name, 'may not be an alias')
|
|
378
|
+
# end
|
|
390
379
|
# end
|
|
391
|
-
# end
|
|
392
380
|
#
|
|
393
|
-
#
|
|
381
|
+
# end
|
|
394
382
|
#
|
|
395
383
|
# @overload validates_each(*attributes, options = {}, &block)
|
|
396
384
|
# @param attributes A list of attribute names to validate.
|
|
397
385
|
# @param [Hash] options
|
|
398
386
|
# @option options [Boolean] :allow_nil (false) Skip validation if the
|
|
399
|
-
# attribute value is
|
|
387
|
+
# attribute value is `nil`.
|
|
400
388
|
# @option options [Boolean] :allow_blank (false) Skip validation if the
|
|
401
|
-
# attribute value is
|
|
389
|
+
# attribute value is `blank`.
|
|
402
390
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
403
391
|
# Valid values include:
|
|
404
|
-
# *
|
|
405
|
-
# *
|
|
406
|
-
# *
|
|
392
|
+
# * `:save`
|
|
393
|
+
# * `:create`
|
|
394
|
+
# * `:update`
|
|
407
395
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
408
396
|
# to call. The validation will only be run if the return value is
|
|
409
|
-
# of the method/proc is true (e.g.
|
|
410
|
-
#
|
|
411
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
397
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
398
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
399
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
412
400
|
# proc to call. The validation will *not* be run if the return value
|
|
413
401
|
# is of the method/proc is false.
|
|
414
402
|
def validates_each *attributes, &block
|
|
@@ -418,45 +406,42 @@ module AWS
|
|
|
418
406
|
validators << BlockValidator.new(self, *attributes, &block)
|
|
419
407
|
end
|
|
420
408
|
|
|
421
|
-
# Validates that the attribute value is not included in the given
|
|
409
|
+
# Validates that the attribute value is not included in the given
|
|
422
410
|
# enumerable.
|
|
423
411
|
#
|
|
424
|
-
#
|
|
412
|
+
# validates_exlusion_of :username, :in => %w(admin administrator)
|
|
425
413
|
#
|
|
426
|
-
#
|
|
414
|
+
# ### Multi-Valued Attributes
|
|
427
415
|
#
|
|
428
416
|
# You may use this with multi-valued attributes the same way you use it
|
|
429
417
|
# with single-valued attributes:
|
|
430
418
|
#
|
|
431
|
-
#
|
|
432
|
-
#
|
|
433
|
-
#
|
|
434
|
-
#
|
|
435
|
-
# validates_exlusion_of :tags, :in => four_letter_words
|
|
419
|
+
# class Product < AWS::Record::Model
|
|
420
|
+
# string_attr :tags, :set => true
|
|
421
|
+
# validates_exlusion_of :tags, :in => four_letter_words
|
|
422
|
+
# end
|
|
436
423
|
#
|
|
437
|
-
# end
|
|
438
|
-
#
|
|
439
424
|
# @overload validates_exclusion_of(*attributes, options = {}, &block)
|
|
440
425
|
# @param attributes A list of attribute names to validate.
|
|
441
426
|
# @param [Hash] options
|
|
442
427
|
# @option options [required, Enumerable] :in An enumerable object to
|
|
443
428
|
# ensure the value is not in.
|
|
444
429
|
# @option options [String] :message A custom error message. The default
|
|
445
|
-
#
|
|
430
|
+
# `:message` is "is reserved".
|
|
446
431
|
# @option options [Boolean] :allow_nil (false) Skip validation if the
|
|
447
|
-
# attribute value is
|
|
432
|
+
# attribute value is `nil`.
|
|
448
433
|
# @option options [Boolean] :allow_blank (false) Skip validation if the
|
|
449
|
-
# attribute value is
|
|
434
|
+
# attribute value is `blank`.
|
|
450
435
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
451
436
|
# Valid values include:
|
|
452
|
-
# *
|
|
453
|
-
# *
|
|
454
|
-
# *
|
|
437
|
+
# * `:save`
|
|
438
|
+
# * `:create`
|
|
439
|
+
# * `:update`
|
|
455
440
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
456
441
|
# to call. The validation will only be run if the return value is
|
|
457
|
-
# of the method/proc is true (e.g.
|
|
458
|
-
#
|
|
459
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
442
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
443
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
444
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
460
445
|
# proc to call. The validation will *not* be run if the return value
|
|
461
446
|
# is of the method/proc is false.
|
|
462
447
|
def validates_exclusion_of *args
|
|
@@ -464,50 +449,47 @@ module AWS
|
|
|
464
449
|
end
|
|
465
450
|
|
|
466
451
|
# Validates the attribute's value matches the given regular exression.
|
|
467
|
-
#
|
|
468
|
-
# validates_format_of :year, :with => /^\d{4}$/
|
|
469
452
|
#
|
|
470
|
-
#
|
|
453
|
+
# validates_format_of :year, :with => /^\d{4}$/
|
|
454
|
+
#
|
|
455
|
+
# You can also perform a not-match using `:without` instead of `:with`.
|
|
471
456
|
#
|
|
472
|
-
#
|
|
457
|
+
# validates_format_of :username, :without => /\d/
|
|
473
458
|
#
|
|
474
|
-
#
|
|
459
|
+
# ### Multi-Valued Attributes
|
|
475
460
|
#
|
|
476
461
|
# You may use this with multi-valued attributes the same way you use it
|
|
477
462
|
# with single-valued attributes:
|
|
478
463
|
#
|
|
479
|
-
#
|
|
480
|
-
#
|
|
481
|
-
#
|
|
482
|
-
#
|
|
483
|
-
# validates_format_of :tags, :with => /^\w{2,10}$/
|
|
464
|
+
# class Product < AWS::Record::Model
|
|
465
|
+
# string_attr :tags, :set => true
|
|
466
|
+
# validates_format_of :tags, :with => /^\w{2,10}$/
|
|
467
|
+
# end
|
|
484
468
|
#
|
|
485
|
-
# end
|
|
486
|
-
#
|
|
487
469
|
# @overload validates_format_of(*attributes, options = {}, &block)
|
|
488
470
|
# @param attributes A list of attribute names to validate.
|
|
489
471
|
# @param [Hash] options
|
|
490
|
-
# @option options [Regexp] :with If the value matches the given
|
|
472
|
+
# @option options [Regexp] :with If the value matches the given
|
|
491
473
|
# regex, an error will not be added.
|
|
492
|
-
# @option options [Regexp] :without If the value matches the given
|
|
474
|
+
# @option options [Regexp] :without If the value matches the given
|
|
493
475
|
# regex, an error will be added.
|
|
494
476
|
# must match, or an error is added.
|
|
495
477
|
# @option options [String] :message A custom error message. The default
|
|
496
|
-
#
|
|
478
|
+
# `:message` is "is reserved".
|
|
497
479
|
# @option options [Boolean] :allow_nil (false) Skip validation if the
|
|
498
|
-
# attribute value is
|
|
480
|
+
# attribute value is `nil`.
|
|
499
481
|
# @option options [Boolean] :allow_blank (false) Skip validation if the
|
|
500
|
-
# attribute value is
|
|
482
|
+
# attribute value is `blank`.
|
|
501
483
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
502
484
|
# Valid values include:
|
|
503
|
-
# *
|
|
504
|
-
# *
|
|
505
|
-
# *
|
|
485
|
+
# * `:save`
|
|
486
|
+
# * `:create`
|
|
487
|
+
# * `:update`
|
|
506
488
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
507
489
|
# to call. The validation will only be run if the return value is
|
|
508
|
-
# of the method/proc is true (e.g.
|
|
509
|
-
#
|
|
510
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
490
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
491
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
492
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
511
493
|
# proc to call. The validation will *not* be run if the return value
|
|
512
494
|
# is of the method/proc is false.
|
|
513
495
|
def validates_format_of *args
|
|
@@ -517,36 +499,36 @@ module AWS
|
|
|
517
499
|
# Validates that the attribute value is included in the given enumerable
|
|
518
500
|
# object.
|
|
519
501
|
#
|
|
520
|
-
#
|
|
521
|
-
#
|
|
522
|
-
#
|
|
502
|
+
# class MultipleChoiceAnswer < AWS::Record::Model
|
|
503
|
+
# validates_inclusion_of :letter, :in => %w(a b c d e)
|
|
504
|
+
# end
|
|
523
505
|
#
|
|
524
|
-
#
|
|
506
|
+
# ### Multi-Valued Attributes
|
|
525
507
|
#
|
|
526
508
|
# You may use this with multi-valued attributes the same way you use it
|
|
527
509
|
# with single-valued attributes.
|
|
528
|
-
#
|
|
510
|
+
#
|
|
529
511
|
# @overload validates_inclusion_of(*attributes, options = {}, &block)
|
|
530
512
|
# @param attributes A list of attribute names to validate.
|
|
531
513
|
# @param [Hash] options
|
|
532
514
|
# @option options [required, Enumerable] :in An enumerable object to
|
|
533
515
|
# check for the value in.
|
|
534
516
|
# @option options [String] :message A custom error message. The default
|
|
535
|
-
#
|
|
517
|
+
# `:message` is "is not included in the list".
|
|
536
518
|
# @option options [Boolean] :allow_nil (false) Skip validation if the
|
|
537
|
-
# attribute value is
|
|
519
|
+
# attribute value is `nil`.
|
|
538
520
|
# @option options [Boolean] :allow_blank (false) Skip validation if the
|
|
539
|
-
# attribute value is
|
|
521
|
+
# attribute value is `blank`.
|
|
540
522
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
541
523
|
# Valid values include:
|
|
542
|
-
# *
|
|
543
|
-
# *
|
|
544
|
-
# *
|
|
524
|
+
# * `:save`
|
|
525
|
+
# * `:create`
|
|
526
|
+
# * `:update`
|
|
545
527
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
546
528
|
# to call. The validation will only be run if the return value is
|
|
547
|
-
# of the method/proc is true (e.g.
|
|
548
|
-
#
|
|
549
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
529
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
530
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
531
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
550
532
|
# proc to call. The validation will *not* be run if the return value
|
|
551
533
|
# is of the method/proc is false.
|
|
552
534
|
def validates_inclusion_of *attributes
|
|
@@ -555,13 +537,13 @@ module AWS
|
|
|
555
537
|
|
|
556
538
|
# Validates the attribute values are of a specified length.
|
|
557
539
|
#
|
|
558
|
-
#
|
|
540
|
+
# validates_lenth_of :username, :within => 3..25
|
|
559
541
|
#
|
|
560
|
-
#
|
|
561
|
-
#
|
|
562
|
-
#
|
|
542
|
+
# ### Length vs Count
|
|
543
|
+
#
|
|
544
|
+
# `validates_length_of` validates the length of individual attribute
|
|
563
545
|
# values, whereas +validates_count_of: validates the number of
|
|
564
|
-
# attribute values.
|
|
546
|
+
# attribute values.
|
|
565
547
|
#
|
|
566
548
|
# If you need to ensure there are certain number of values see
|
|
567
549
|
# {#validates_count_of} instead.
|
|
@@ -572,17 +554,17 @@ module AWS
|
|
|
572
554
|
# @option options [Enumerable] :within An enumerable object to
|
|
573
555
|
# ensure the length of the value falls within.
|
|
574
556
|
# @option options [Integer] :exactly The exact length a value must be.
|
|
575
|
-
# If this validation fails the error message specified by
|
|
576
|
-
#
|
|
557
|
+
# If this validation fails the error message specified by
|
|
558
|
+
# `:wrong_length` will be added.
|
|
577
559
|
# @option options [Range] :within An enumerable object which must
|
|
578
560
|
# include the length of the attribute, or an error will be added.
|
|
579
|
-
# If the attribute has a length outside the range then the
|
|
580
|
-
#
|
|
561
|
+
# If the attribute has a length outside the range then the
|
|
562
|
+
# `:too_long` or `:too_short` error message will be added.
|
|
581
563
|
# @option options [Integer] :minimum The minimum length an attribute
|
|
582
|
-
# value should be. If it is shorter, the
|
|
564
|
+
# value should be. If it is shorter, the `:too_short` error
|
|
583
565
|
# message will be added.
|
|
584
566
|
# @option options [Integer] :maximum The maximum length an attribute
|
|
585
|
-
# value should be. If it is longer, the
|
|
567
|
+
# value should be. If it is longer, the `:too_long` error
|
|
586
568
|
# message will be added.
|
|
587
569
|
# @option options [String] :too_long An error message added
|
|
588
570
|
# when the attribute value is too long. Defaults to
|
|
@@ -594,22 +576,22 @@ module AWS
|
|
|
594
576
|
# characters)"</code>
|
|
595
577
|
# @option options [String] :wrong_length An error message
|
|
596
578
|
# added when the attribute has the incorrect length (as
|
|
597
|
-
# specified by
|
|
579
|
+
# specified by `:exactly`). Defaults to <code>"is the wrong
|
|
598
580
|
# length (should be %{exactly} characters"</code>
|
|
599
581
|
# @option options [Boolean] :allow_nil (false) Skip validation if the
|
|
600
|
-
# attribute value is
|
|
582
|
+
# attribute value is `nil`.
|
|
601
583
|
# @option options [Boolean] :allow_blank (false) Skip validation if the
|
|
602
|
-
# attribute value is
|
|
584
|
+
# attribute value is `blank`.
|
|
603
585
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
604
586
|
# Valid values include:
|
|
605
|
-
# *
|
|
606
|
-
# *
|
|
607
|
-
# *
|
|
587
|
+
# * `:save`
|
|
588
|
+
# * `:create`
|
|
589
|
+
# * `:update`
|
|
608
590
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
609
591
|
# to call. The validation will only be run if the return value is
|
|
610
|
-
# of the method/proc is true (e.g.
|
|
611
|
-
#
|
|
612
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
592
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
593
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
594
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
613
595
|
# proc to call. The validation will *not* be run if the return value
|
|
614
596
|
# is of the method/proc is false.
|
|
615
597
|
def validates_length_of *args
|
|
@@ -618,83 +600,83 @@ module AWS
|
|
|
618
600
|
|
|
619
601
|
# Validates the attribute has a numeric value.
|
|
620
602
|
#
|
|
621
|
-
#
|
|
603
|
+
# validates_numericality_of :age, :only_integer => true
|
|
622
604
|
#
|
|
623
|
-
#
|
|
605
|
+
# ### Multi-Valued Attributes
|
|
624
606
|
#
|
|
625
607
|
# You can validate multi-valued attributes using this the same way you
|
|
626
|
-
# validate single-valued attributes. Each value will be validated
|
|
608
|
+
# validate single-valued attributes. Each value will be validated
|
|
627
609
|
# individually.
|
|
628
610
|
#
|
|
629
611
|
# @overload validates_numericality_of(*attributes, options = {}, &block)
|
|
630
612
|
# @param attributes A list of attribute names to validate.
|
|
631
613
|
# @param [Hash] options
|
|
632
|
-
# @option options [Boolean] :only_integer (false) Adds an error
|
|
614
|
+
# @option options [Boolean] :only_integer (false) Adds an error
|
|
633
615
|
# when valiating and the value is numeric, but it not a whole number.
|
|
634
616
|
# @option options [Integer] :equal_to When set the value must equal
|
|
635
617
|
# the given value exactly. May not be used with the greater/less
|
|
636
618
|
# options.
|
|
637
619
|
# @option options [Numeric] :greater_than Ensures the attribute
|
|
638
620
|
# is greater than the given number.
|
|
639
|
-
# @option options [Integer] :greater_than_or_equal_to Ensures the
|
|
621
|
+
# @option options [Integer] :greater_than_or_equal_to Ensures the
|
|
640
622
|
# attribute is greater than or equal to the given number.
|
|
641
623
|
# @option options [Numeric] :less_than Ensures the attribute is less
|
|
642
624
|
# than the given value.
|
|
643
625
|
# @option options [Integer] :less_than_or_equal_to Ensures the value is
|
|
644
626
|
# less than or equal to the given number.
|
|
645
627
|
# @option options [Numeric] :even If true, the value may only be
|
|
646
|
-
# an even integer. This forces the
|
|
628
|
+
# an even integer. This forces the `:only_integer` to `true`.
|
|
647
629
|
# @option options [Numeric] :odd If true, the value may only be
|
|
648
|
-
# an odd integer. This forces the
|
|
630
|
+
# an odd integer. This forces the `:only_integer` to `true`.
|
|
649
631
|
# @option options [String] :message A custom error message. The default
|
|
650
|
-
#
|
|
632
|
+
# `:message` is "is not a number".
|
|
651
633
|
# @option options [Boolean] :allow_nil (false) Skip validation if the
|
|
652
|
-
# attribute value is
|
|
634
|
+
# attribute value is `nil`.
|
|
653
635
|
# @option options [Boolean] :allow_blank (false) Skip validation if the
|
|
654
|
-
# attribute value is
|
|
636
|
+
# attribute value is `blank`.
|
|
655
637
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
656
638
|
# Valid values include:
|
|
657
|
-
# *
|
|
658
|
-
# *
|
|
659
|
-
# *
|
|
639
|
+
# * `:save`
|
|
640
|
+
# * `:create`
|
|
641
|
+
# * `:update`
|
|
660
642
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
661
643
|
# to call. The validation will only be run if the return value is
|
|
662
|
-
# of the method/proc is true (e.g.
|
|
663
|
-
#
|
|
664
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
644
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
645
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
646
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
665
647
|
# proc to call. The validation will *not* be run if the return value
|
|
666
648
|
# is of the method/proc is false.
|
|
667
649
|
def validates_numericality_of *args
|
|
668
650
|
validators << NumericalityValidator.new(self, *args)
|
|
669
651
|
end
|
|
670
652
|
|
|
671
|
-
# Validates the named attributes are not blank. For validation
|
|
653
|
+
# Validates the named attributes are not blank. For validation
|
|
672
654
|
# purposes, blank values include:
|
|
673
655
|
#
|
|
674
|
-
# *
|
|
656
|
+
# * `nil`
|
|
675
657
|
# * empty string
|
|
676
658
|
# * anything that responds to #empty? with true
|
|
677
659
|
# * anything that responds to #blank? with true
|
|
678
|
-
#
|
|
660
|
+
#
|
|
679
661
|
# @overload validates_presence_of(*attributes, options = {}, &block)
|
|
680
662
|
# @param attributes A list of attribute names to validate.
|
|
681
663
|
# @param [Hash] options
|
|
682
664
|
# @option options [String] :message A custom error message. The default
|
|
683
|
-
#
|
|
665
|
+
# `:message` is "may not be blank".
|
|
684
666
|
# @option options [Symbol] :on (:save) When this validation is run.
|
|
685
667
|
# Valid values include:
|
|
686
|
-
# *
|
|
687
|
-
# *
|
|
688
|
-
# *
|
|
668
|
+
# * `:save`
|
|
669
|
+
# * `:create`
|
|
670
|
+
# * `:update`
|
|
689
671
|
# @option options [Boolean] :allow_nil (false) Skip validation if the
|
|
690
|
-
# attribute value is
|
|
672
|
+
# attribute value is `nil`.
|
|
691
673
|
# @option options [Boolean] :allow_blank (false) Skip validation if the
|
|
692
|
-
# attribute value is
|
|
674
|
+
# attribute value is `blank`.
|
|
693
675
|
# @option options [Symbol,String,Proc] :if Specifies a method or proc
|
|
694
676
|
# to call. The validation will only be run if the return value is
|
|
695
|
-
# of the method/proc is true (e.g.
|
|
696
|
-
#
|
|
697
|
-
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
677
|
+
# of the method/proc is true (e.g. `:if => :name_changed?` or
|
|
678
|
+
# `:if => lambda{|book| book.in_stock? }`).
|
|
679
|
+
# @option options [Symbol,String,Proc] :unless Specifies a method or
|
|
698
680
|
# proc to call. The validation will *not* be run if the return value
|
|
699
681
|
# is of the method/proc is false.
|
|
700
682
|
def validates_presence_of *args
|