Sha256: 78a2bc1c031ff005dd07f29576504762b81de2cfe257b5377470b208ca5fc721

Contents?: true

Size: 729 Bytes

Versions: 1

Compression:

Stored size: 729 Bytes

Contents

require 'base64'

module Proposal

  def self.included(receiver)
    receiver.belongs_to :item, :polymorphic => true
    receiver.validates_presence_of :item_id, :item_type, :candidate_data

    receiver.send :include, InstanceMethods
  end

  module InstanceMethods
    def candidate_attributes
      ActiveSupport::JSON.decode Marshal.load(Base64.decode64(candidate_data))
    end
    def candidate_attributes=(candidate_attributes)
      self.candidate_data = Base64.encode64(Marshal.dump(candidate_attributes.to_json))
    end
  end

end

class ReleasableCandidate < ActiveRecord::Base
  include Proposal
end

class ReleasableCandidateItem < ActiveRecord::Base
  include Proposal
  validates_presence_of :collection_name
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
act_as_releasable-0.0.1 lib/act_as_releasable/models.rb