module ActionField::ActsAsActionField::ClassMethods

Public Instance Methods

action_field(options = {}) click to toggle source
# File lib/actionfield/acts_as_action_field.rb, line 9
def action_field(options = {})
  include ActionField::ActionFieldInstanceMethods
  cattr_accessor :action_fields

  on = Array(options[:on])
  before_create :action_field_execute if on.empty? || on.include?(:create)
  before_update :action_field_execute if on.empty? || on.include?(:update)
  options.delete(:on)

  active_record_fields = self.column_names.collect(&:to_sym)
  self.action_fields = Hash.new.tap do |h|
    options.each do |action, fields|
      fields.each do |field|
        raise Exceptions::FieldNotFound, "Field :#{field} not found" if active_record_fields.exclude?(field)
        h[field] ||= []
        h[field] << action
      end
    end
  end
end