Module: RequiresApproval::ClassMethods
- Defined in:
- lib/requires_approval.rb
Instance Method Summary collapse
-
#prepare_tables_for_requires_approval ⇒ Object
adds the correct tables and columns for requires_approval.
- #requires_approval_for(*attrs) ⇒ Object
- #unapproved ⇒ Object
-
#versions_class ⇒ Object
the class which our versions are.
Instance Method Details
#prepare_tables_for_requires_approval ⇒ Object
adds the correct tables and columns for requires_approval
179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/requires_approval.rb', line 179 def prepare_tables_for_requires_approval self.reset_column_information # adds is_active to the parent table self.add_requires_approval_fields self.reset_column_information # adds our versions table self.drop_versions_table self.create_versions_table end |
#requires_approval_for(*attrs) ⇒ Object
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/requires_approval.rb', line 192 def requires_approval_for(*attrs) self.(attrs.) # set up our attributes that require approval self.class_attribute :fields_requiring_approval self.fields_requiring_approval = attrs.collect(&:to_s) # set up delegates self.set_up_version_delegates # create a blank version before create to handle if no # attributes were ever set self.before_validation( :latest_unapproved_version_with_nil_check, :on => :create ) # create the versions class self.create_versions_class self.has_many :versions, :class_name => self.versions_class.name, :foreign_key => self.versions_foreign_key self.has_one :latest_unapproved_version, :autosave => true, :class_name => self.versions_class.name, :foreign_key => self.versions_foreign_key, :conditions => [ "#{self.versions_table_name}.is_approved = ?", false ] end |
#unapproved ⇒ Object
224 225 226 227 |
# File 'lib/requires_approval.rb', line 224 def unapproved includes(:latest_unapproved_version) .where("#{self.versions_table_name}.id IS NOT NULL") end |
#versions_class ⇒ Object
the class which our versions are
230 231 232 |
# File 'lib/requires_approval.rb', line 230 def versions_class "#{self.name}::#{self.versions_class_name}".constantize end |