1
1
module ActiveRecord
2
2
class Base
3
- type condition[T] = Symbol | ^(T) [self : T] -> boolish
3
+ # https://guides.rubyonrails.org/v6.0/active_record_callbacks.html#multiple-callback-conditions
4
+ # https://guides.rubyonrails.org/v6.0/active_record_validations.html#combining-validation-conditions
5
+ type conditions[T] = ActiveModel::Validations::ClassMethods::conditions[T]
4
6
5
7
# puts ActiveRecord::Base.singleton_class.ancestors.map(&:to_s).select { |s| /ClassMethods$/.match?(s) }.map{ |s| "extend ::#{s}" }.sort
6
8
extend ::ActiveModel::AttributeMethods::ClassMethods
@@ -49,8 +51,8 @@ module ActiveRecord
49
51
def self.transaction : [T] (?requires_new: boolish, ?isolation: (:read_uncommitted | :read_committed | :repeatable_read | :serializable)?, ?joinable: boolish) { () -> T } -> T
50
52
def self.create : (**untyped ) -> instance
51
53
def self.create! : (**untyped ) -> instance
52
- def self.validate : (*untyped , ?if: condition [instance ], ?unless: condition [instance ], **untyped ) -> void
53
- def self.validates : (*untyped , ?if: condition [instance ], ?unless: condition [instance ], **untyped ) -> void
54
+ def self.validate : (*untyped , ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) -> void
55
+ def self.validates : (*untyped , ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) -> void
54
56
55
57
# callbacks
56
58
interface _AfterCreateCallbackObject
@@ -96,29 +98,29 @@ module ActiveRecord
96
98
type before_validation_callback[T] = callback[T] | _BeforeValidationCallbackObject
97
99
type before_save_callback[T] = callback[T] | _BeforeSaveCallbackObject
98
100
99
- def self.after_commit : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
100
- def self.after_create_commit : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) -> void | ...
101
- def self.after_update_commit : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) -> void | ...
102
- def self.after_destroy_commit : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) -> void | ...
103
- def self.after_save_commit : (*after_save_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) -> void | ...
104
- def self.after_create : (*after_create_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
105
- def self.after_destroy : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
106
- def self.after_rollback : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
107
- def self.after_save : (*after_save_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
108
- def self.after_update : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
109
- def self.after_validation : (*after_validation_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
110
- def self.after_initialize : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
111
- def self.after_find : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
112
- def self.after_touch : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
113
- def self.around_create : (*around_create_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
114
- def self.around_destroy : (*around_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
115
- def self.around_save : (*around_save_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
116
- def self.around_update : (*around_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
117
- def self.before_create : (*before_create_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
118
- def self.before_destroy : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
119
- def self.before_save : (*before_save_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
120
- def self.before_update : (*callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
121
- def self.before_validation : (*before_validation_callback[instance ], ?if: condition [instance ], ?unless: condition [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
101
+ def self.after_commit : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
102
+ def self.after_create_commit : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) -> void | ...
103
+ def self.after_update_commit : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) -> void | ...
104
+ def self.after_destroy_commit : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) -> void | ...
105
+ def self.after_save_commit : (*after_save_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) -> void | ...
106
+ def self.after_create : (*after_create_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
107
+ def self.after_destroy : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
108
+ def self.after_rollback : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
109
+ def self.after_save : (*after_save_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
110
+ def self.after_update : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
111
+ def self.after_validation : (*after_validation_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
112
+ def self.after_initialize : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
113
+ def self.after_find : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
114
+ def self.after_touch : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
115
+ def self.around_create : (*around_create_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
116
+ def self.around_destroy : (*around_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
117
+ def self.around_save : (*around_save_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
118
+ def self.around_update : (*around_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
119
+ def self.before_create : (*before_create_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
120
+ def self.before_destroy : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
121
+ def self.before_save : (*before_save_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
122
+ def self.before_update : (*callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
123
+ def self.before_validation : (*before_validation_callback[instance ], ?if: conditions [instance ], ?unless: conditions [instance ], **untyped ) ?{ () [self : instance ] -> untyped } -> void
122
124
123
125
def self.columns : () -> Array[untyped ]
124
126
def self.reflect_on_all_associations : (?Symbol) -> Array[untyped ]
@@ -133,7 +135,6 @@ module ActiveRecord
133
135
def destroy : () -> bool
134
136
def valid? : (?Symbol | Array[Symbol] context) -> bool
135
137
def invalid? : (?Symbol | Array[Symbol] context) -> bool
136
- def errors : () -> untyped
137
138
def [] : (Symbol) -> untyped
138
139
def []= : (Symbol, untyped ) -> untyped
139
140
0 commit comments