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
215 216 217 218 219 220 221 222 223 224 225 226 227 |
# File 'lib/requires_approval.rb', line 215 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
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 |
# File 'lib/requires_approval.rb', line 229 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
261 262 263 264 |
# File 'lib/requires_approval.rb', line 261 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
267 268 269 |
# File 'lib/requires_approval.rb', line 267 def versions_class "#{self.name}::#{self.versions_class_name}".constantize end |