Sha256: c4d8a5843de5e95094cdaa56d62ea93d0ef6592011cd801373d1e29db6e04c1c
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 KB
Contents
module Statesman module Adapters module ActiveRecordModel def self.included(base) base.extend(ClassMethods) end module ClassMethods def in_state(*states) joins(transition_name) .joins(transition_join) .where("#{transition_name}.to_state" => states) .where("transition2.id" => nil) end def not_in_state(*states) joins(transition_name) .joins(transition_join) .where("#{transition_name}.to_state NOT IN (?)", states) .where("transition2.id" => nil) end private def transition_class raise NotImplementedError, "A transition_class method should be " + "defined on the model" end def transition_name transition_class.table_name.to_sym end def model_foreign_key reflections[transition_name].foreign_key end def transition_join "LEFT OUTER JOIN #{transition_name} transition2 ON transition2.#{model_foreign_key} = #{table_name}.id AND transition2.sort_key > #{transition_name}.sort_key" end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
statesman-0.5.0 | lib/statesman/adapters/active_record_model.rb |