module SmartSMS::HasSmsVerification::ClassMethods

Class methods that will be extended

Public Instance Methods

has_sms_verification(moible_column = :phone, verification_column = :verified_at, options = {}) click to toggle source

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

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

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

Options:

* :class_name   自定义的Message类名称. 默认是 `::SmartSMS::Message`
* :messages     自定义的Message关联名称.  默认是 `:messages`.
# 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