Module: Promiscuous::Publisher::Model::Base::ClassMethods
- Defined in:
- lib/promiscuous/publisher/model/base.rb
Instance Method Summary collapse
- #get_operation_class_for(operation) ⇒ Object
- #in_publish_block? ⇒ Boolean
- #inherited(subclass) ⇒ Object
- #promiscuous_collection_name ⇒ Object
-
#publish(*args, &block) ⇒ Object
all methods are virtual.
- #publish_as ⇒ Object
Instance Method Details
#get_operation_class_for(operation) ⇒ Object
102 103 104 |
# File 'lib/promiscuous/publisher/model/base.rb', line 102 def get_operation_class_for(operation) Promiscuous::Publisher::Operation::Base end |
#in_publish_block? ⇒ Boolean
94 95 96 |
# File 'lib/promiscuous/publisher/model/base.rb', line 94 def in_publish_block? @in_publish_block.to_i > 0 end |
#inherited(subclass) ⇒ Object
110 111 112 113 114 |
# File 'lib/promiscuous/publisher/model/base.rb', line 110 def inherited(subclass) super subclass.published_attrs = self.published_attrs.dup # no copy for published_db_fields end |
#promiscuous_collection_name ⇒ Object
98 99 100 |
# File 'lib/promiscuous/publisher/model/base.rb', line 98 def promiscuous_collection_name self.name.pluralize.underscore end |
#publish(*args, &block) ⇒ Object
all methods are virtual
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/promiscuous/publisher/model/base.rb', line 67 def publish(*args, &block) = args. attributes = args.map(&:to_sym) # TODO reject invalid options @publish_as = [:as].to_s if [:as] ([self] + descendants).each do |klass| # When the user passes :use => [:f1, :f2] for example, operation/mongoid.rb # can track f1 and f2 as fields important for the publishing. # It's important for virtual attributes. The published_db_fields is global # for the entire subclass tree. klass.published_db_fields |= [[:use]].flatten.map(&:to_sym) if [:use] klass.published_db_fields |= attributes # aliased fields are resolved later klass.published_attrs |= attributes end begin @in_publish_block = @in_publish_block.to_i + 1 block.call if block ensure @in_publish_block -= 1 end end |
#publish_as ⇒ Object
106 107 108 |
# File 'lib/promiscuous/publisher/model/base.rb', line 106 def publish_as @publish_as || name end |