Discourse. Users, Groups, Categories
2 min readJan 22, 2025
Notes about getting information about users, groups, categories etc. right after an initial installation
# All groups
Group.pluck(:name)
[
"everyone",
"trust_level_2",
"trust_level_3",
"trust_level_4",
"admins",
"staff",
"moderators",
"trust_level_0",
"trust_level_1"
]
# Groups visibility
Group.visibility_levels
=> {:public=>0, :logged_on_users=>1, :members=>2, :staff=>3, :owners=>4}
# How much users in a group
Group.all.each_with_object({}) do |group, result|
result[group.name] = group.users.count
end
{
"everyone"=>0,
"trust_level_2"=>2,
"trust_level_3"=>2,
"trust_level_4"=>2,
"admins"=>3,
"staff"=>3,
"moderators"=>2,
"trust_level_0"=>4,
"trust_level_1"=>4
}
# How much users in the system
User.count
# Last user
User.last.email
=> "admin@test.com"
# User's groups
User.last.groups.pluck(:name)
=> ["trust_level_0", "trust_level_1"]
User.last.trust_level
=> 1
User.last.admin?
=> false
User.last.moderator?
=> false
User.last.active?
=> true
User.last.suspended?
=> false
User.last.last_seen_at
=> Wed, 22 Jan 2025 12:57:39.190562000 UTC +00:00
# access to categories
categories = User.last.groups.map(&:categories).flatten.uniq
categories.map(&:name)
=> []
Trust Levels in Discourse:
- Trust Level 0 (New User):
Newly registered. Limited actions (e.g., restricted links/images). Cannot send private messages. - Trust Level 1 (Basic User):
Access to basic features: create topics, send private messages, upload images and attachments. - Trust Level 2 (Member):
Active user. Can invite others to topics, ignore users, and mark topics as visited. - Trust Level 3 (Regular):
Highly active. Can edit topic titles, move topics between categories, and temporarily hide posts. - Trust Level 4 (Leader):
Highest trust level, manually assigned. Almost full moderation rights: edit any post, close/open topics.
Categories
Category.count
=> 4
Category.pluck(:name)
=> ["Site Feedback", "Uncategorized", "General", "Staff"]
Category.all.each do |category|
puts "Category: #{category.name}, Topics: #{category.topic_count}"
end
Category: Site Feedback, Topics: 0
Category: Uncategorized, Topics: 0
Category: General, Topics: 1
Category: Staff, Topics: 2
Now I/You know about basic Models in Discourse.
Happy coding!