1
0
Fork 0
mirror of https://github.com/aasm/aasm synced 2023-03-27 23:22:41 -04:00

Merge branch 'master' of github.com:aasm/aasm

This commit is contained in:
Anil Maurya 2018-09-07 12:21:19 +05:30
commit d23e75ef46
5 changed files with 46 additions and 9 deletions

View file

@ -1,13 +1,15 @@
# CHANGELOG # CHANGELOG
## unreleased
* Enable AASM scopes to be defined on abstract classes.
## 5.0.0 ## 5.0.0
* Chore(invokers): Refactor callback invokers, add class-callbacks support [#541](https://github.com/aasm/aasm/pull/541), thanks to [pandomic](https://github.com/pandomic) * Chore(invokers): Refactor callback invokers, add class-callbacks support [#541](https://github.com/aasm/aasm/pull/541), thanks to [pandomic](https://github.com/pandomic)
* Add docker setup to readme * Add docker setup to readme
* Add support for Nobrainer (RethinkDB) [#522](https://github.com/aasm/aasm/pull/522), thanks to [zedtux] (https://github.com/zedtux) * Add support for Nobrainer (RethinkDB) [#522](https://github.com/aasm/aasm/pull/522), thanks to [zedtux](https://github.com/zedtux)
* Patch `allow_event` to accept event with custom arguments [#419](https://github.com/aasm/aasm/pull/419), thanks to [czhc](https://github.com/czhc) * Patch `allow_event` to accept event with custom arguments [#419](https://github.com/aasm/aasm/pull/419), thanks to [czhc](https://github.com/czhc)
## 4.12.3 ## 4.12.3
* Add to AASM fire(event) and fire!(event) methods [#494](https://github.com/aasm/aasm/pull/494), thanks to [slayer](https://github.com/slayer) * Add to AASM fire(event) and fire!(event) methods [#494](https://github.com/aasm/aasm/pull/494), thanks to [slayer](https://github.com/slayer)
@ -21,9 +23,9 @@
## 4.12.1 ## 4.12.1
* DRY-up Mongoid and ActiveRecord Persistence, Add Sequel transactions and locking [#475](https://github.com/aasm/aasm/pull/475), thanks to [@Aryk] (https://github.com/Aryk) * DRY-up Mongoid and ActiveRecord Persistence, Add Sequel transactions and locking [#475](https://github.com/aasm/aasm/pull/475), thanks to [@Aryk](https://github.com/Aryk)
* Add aliases for event methods [#476](https://github.com/aasm/aasm/pull/476), thanks to [@Aryk] (https://github.com/Aryk) * Add aliases for event methods [#476](https://github.com/aasm/aasm/pull/476), thanks to [@Aryk](https://github.com/Aryk)
* Support Minitest spec expectations [#387](https://github.com/aasm/aasm/pull/387), thanks to [@faragorn] (https://github.com/faragorn) * Support Minitest spec expectations [#387](https://github.com/aasm/aasm/pull/387), thanks to [@faragorn](https://github.com/faragorn)
## 4.12.0 ## 4.12.0
* Fix thread safe issue with concurrent-ruby gem [see [pull-request #422](https://github.com/aasm/aasm/pull/442), thanks to [@reidmorrison](https://github.com/reidmorrison) * Fix thread safe issue with concurrent-ruby gem [see [pull-request #422](https://github.com/aasm/aasm/pull/442), thanks to [@reidmorrison](https://github.com/reidmorrison)

View file

@ -41,14 +41,15 @@ module AASM
module ClassMethods module ClassMethods
def aasm_create_scope(state_machine_name, scope_name) def aasm_create_scope(state_machine_name, scope_name)
if ActiveRecord::VERSION::MAJOR >= 3
conditions = { aasm(state_machine_name).attribute_name => scope_name.to_s }
class_eval do
scope scope_name, lambda { where(table_name => conditions) }
end
else
conditions = { conditions = {
table_name => { aasm(state_machine_name).attribute_name => scope_name.to_s } table_name => { aasm(state_machine_name).attribute_name => scope_name.to_s }
} }
if ActiveRecord::VERSION::MAJOR >= 3
class_eval do
scope scope_name, lambda { where(conditions) }
end
else
class_eval do class_eval do
named_scope scope_name, :conditions => conditions named_scope scope_name, :conditions => conditions
end end

View file

@ -11,6 +11,9 @@ ActiveRecord::Migration.suppress_messages do
ActiveRecord::Migration.create_table "multiple_simple_new_dsls", :force => true do |t| ActiveRecord::Migration.create_table "multiple_simple_new_dsls", :force => true do |t|
t.string "status" t.string "status"
end end
ActiveRecord::Migration.create_table "implemented_abstract_class_dsls", :force => true do |t|
t.string "status"
end
ActiveRecord::Migration.create_table "complex_active_record_examples", :force => true do |t| ActiveRecord::Migration.create_table "complex_active_record_examples", :force => true do |t|
t.string "left" t.string "left"

View file

@ -15,3 +15,18 @@ class MultipleSimpleNewDsl < ActiveRecord::Base
state :new state :new
end end
end end
class AbstractClassDsl < ActiveRecord::Base
include AASM
self.abstract_class = true
aasm :column => :status
aasm do
state :unknown_scope, :another_unknown_scope
state :new
end
end
class ImplementedAbstractClassDsl < AbstractClassDsl
end

View file

@ -333,6 +333,22 @@ if defined?(ActiveRecord)
end end
end end
# Scopes on abstract classes didn't work until Rails 5.
#
# Reference:
# https://github.com/rails/rails/issues/10658
if ActiveRecord::VERSION::MAJOR >= 5
context "For a descendant of an abstract model" do
it "should add the scope without the table_name" do
expect(ImplementedAbstractClassDsl).to respond_to(:unknown_scope)
expect(ImplementedAbstractClassDsl).to respond_to(:another_unknown_scope)
expect(ImplementedAbstractClassDsl.unknown_scope.is_a?(ActiveRecord::Relation)).to be_truthy
expect(ImplementedAbstractClassDsl.another_unknown_scope.is_a?(ActiveRecord::Relation)).to be_truthy
end
end
end
it "does not create scopes if requested" do it "does not create scopes if requested" do
expect(NoScope).not_to respond_to(:pending) expect(NoScope).not_to respond_to(:pending)
end end