lib/token_master/model.rb in token_master-0.0.1 vs lib/token_master/model.rb in token_master-0.1.0

- old
+ new

@@ -1,35 +1,42 @@ module TokenMaster - # TODO + # `TokenMaster::Model` provides the interface to the app it is used in, providing access to its public methods by invoking `TokenMaster::ClassMethods` and definiing the appropriate methods on the app model(s). module Model + # Includes `TokenMaster::Model` and extends `TokenMaster::ClassMethods` to the class it's used with (automatically included via Railties) def self.included(base) base.extend(ClassMethods) end + # `TokenMaster::ClassMethods` defines methods on the tokenable Class to be used in applying TokenMaster module ClassMethods - # TODO + # Iterates over each of the tokenables provided in the generator arguments to define the appropriate TokenMaster methods on the tokenable model def token_master(*tokenables) tokenables.each do |tokenable| # instance methods - # TODO + + # Defines a method on the tokenable model instance to generate a tokenable action token, e.g., `user.set_confim_token!` define_method("set_#{tokenable}_token!") do TokenMaster::Core.set_token!(self, tokenable) end - # TODO - define_method("send_#{tokenable}_instructions!") do |email| - TokenMaster::Core.send_instructions!(self, tokenable, email) + + # Defines a method on the tokenable model instance to send tokenable action instructions, e.g., `user.send_confim_instructions!`. Accepts a block with app logic to send instructions. + define_method("send_#{tokenable}_instructions!") do |&email| + TokenMaster::Core.send_instructions!(self, tokenable, &email) end - # TODO + + # Defines a method on the tokenable model instance to retrieve the status of a tokenable action, e.g., `user.confim_status` define_method("#{tokenable}_status") do TokenMaster::Core.status(self, tokenable) end - # TODO + + # Defines a method on the tokenable model instance to force the completion of a tokenable action, e.g., `user.force_confim!`. Accepts keyword arguments for `required_params`. define_method("force_#{tokenable}!") do |**params| TokenMaster::Core.force_tokenable!(self, tokenable, **params) end # class methods - # TODO + + # Defines a method on the tokenable model class to completed a tokenable action given a token, e.g., `User.confim_by_token!`. Takes the token and accepts any keyword arguments for `required_params`. define_singleton_method("#{tokenable}_by_token!") do |token, **params| TokenMaster::Core.do_by_token!(self, tokenable, token, **params) end end end