admins = User.where(:kind => :admin).where_values.reduce(:and)
authors = User.where(:kind => :author).where_values.reduce(:and)
User.where(admins.or(authors))
Here, this example shows to use only ActiveRecord::Relation#where_values, but we can use other very useful methods.
User.where(admins.or(authors)).methods.grep(/values/).sort
#=> [:bind_values,
:bind_values=,
:eager_load_values,
:eager_load_values=,
:group_values,
:group_values=,
:having_values,
:having_values=,
:includes_values,
:includes_values=,
:instance_values,
:joined_includes_values,
:joins_values,
:joins_values=,
:order_values,
:order_values=,
:preload_values,
:preload_values=,
:select_values,
:select_values=,
:where_values,
:where_values=,
:where_values_hash]