Currently I have User
model, which is registered in user.rb
as a new resource for ActiveAdmin. Generated page displays all users with scopes (
STI (Single table inheritance) can be used to create multiple "sub-resources" of the same table/parent model in Active admin
Add a "type" column in user table as a string
Add this to User
model to mirror waiting field with type field
after_commit {|i| update_attribute(:type, waiting ? "UserWaiting" : "UserNotWaiting" )}
Create the new models UserWaiting
and UserNotWaiting
class UserWaiting < User
end
class UserNotWaiting < User
end
Create Active Admin
resources
ActiveAdmin.register UserWaiting do
# ....
end
ActiveAdmin.register UserNotWaiting do
# ....
end
You can run a first-time sync in console
User.all.each {|user| user.save}
..............
Another way could be to skip the type column (steps 1,2 and 5) and solve the rest with scopes.
Step 3 and 4 above
Then create the scopes
#model/user.rb
scope :waiting, where(:waiting => true)
scope :not_waiting, where(:waiting => false)
Scopes in Active Admin
#admin/user.rb
scope :waiting, :default => true
#admin/user_not_waitings.rb
scope :not_waiting, :default => true
Just make sure the other scopes in these two pages are also filtered on waiting/not_waiting