When working with ActiveType you will often find it useful to cast an ActiveRecord instance to its extended ActiveType::Record
variant.
Starting with
active_type 0.4.0
Show archive.org snapshot
you can use ActiveType.cast
for this:
class User < ActiveRecord::Base
...
end
class SignUp < ActiveType::Record[User]
...
end
user = User.find(1)
sign_up = ActiveType.cast(user, SignUp)
sign_up.is_a?(SignUp) # => true
This is basically like
ActiveRecord#becomes
Show archive.org snapshot
, but with fewer bugs and more consistent behavior.
You can also cast an entire relation (scope) to a relation of an ActiveType::Record
:
adult_users = User.where('age >= 18')
adult_sign_ups = ActiveType.cast(adult_users, SignUp)
sign_up = adult_sign_ups.find(1)
sign_up.is_a?(SignUp) # => true
Posted by Henning Koch to makandra dev (2015-06-12 11:25)