discourse/app/models/user_first.rb

20 lines
613 B
Ruby

class UserFirst < ActiveRecord::Base
def self.types
@types ||= Enum.new(used_emoji: 1,
mentioned_user: 2 #unused now
)
end
def self.create_for(user_id, type, post_id=nil)
# the usual case will be that it is already in table, don't try to insert
return false if UserFirst.exists?(user_id: user_id, first_type: types[type])
create!(user_id: user_id, first_type: types[type], post_id: post_id)
true
rescue PG::UniqueViolation, ActiveRecord::RecordNotUnique
# Violating the index just means the user already did it
false
end
end