Module: SmartSMS::HasSmsVerification::ClassMethods

Defined in:
lib/smart_sms/has_sms_verification.rb

Overview

Class methods that will be extended

Defined Under Namespace

Modules: InstanceMethods

Instance Method Summary collapse

Instance Method Details

#has_sms_verification(moible_column = :phone, verification_column = :verified_at, options = {}) ⇒ Object

在您的Model里面声明这个方法, 以添加SMS短信验证功能

  • moible_column: mobile 绑定的字段, 用于发送短信, 默认 :phone

  • verification_column: 验证绑定的字段, 用于判断是否已验证, 默认 :verified_at

Options:

* :class_name   


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/smart_sms/has_sms_verification.rb', line 24

def has_sms_verification(moible_column = :phone, verification_column = :verified_at, options = {})
  send :include, InstanceMethods

  # 用于判断是否已经验证的字段, Datetime 类型, 例如 :verified_at
  class_attribute :sms_verification_column
  self.sms_verification_column = verification_column

  class_attribute :sms_mobile_column
  self.sms_mobile_column = moible_column

  class_attribute :verify_regexp
  self.verify_regexp = /(【.+】|[^a-zA-Z0-9\.\-\+_])/ # 用于抽取校验码, 如若修改过模板, 可能需要修改这个这正则

  if SmartSMS.config.store_sms_in_local

    class_attribute :messages_association_name
    self.messages_association_name = options[:messages] || :messages

    class_attribute :message_class_name
    self.message_class_name = options[:class_name] || '::SmartSMS::Message'

    if ::ActiveRecord::VERSION::MAJOR >= 4 # Rails 4 的 `has_many` 中定义order lambda的新语法
      has_many messages_association_name,
        -> { order('send_time ASC') },
        class_name: message_class_name,
        as:         :smsable
    else
      has_many messages_association_name,
        class_name: message_class_name,
        as:         :smsable,
        order:      'send_time ASC'
    end

  end
end