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
213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/requires_approval.rb', line 213 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
226 227 228 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 |
# File 'lib/requires_approval.rb', line 226 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
258 259 260 261 |
# File 'lib/requires_approval.rb', line 258 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
264 265 266 |
# File 'lib/requires_approval.rb', line 264 def versions_class "#{self.name}::#{self.versions_class_name}".constantize end |