Skip to content

Instantly share code, notes, and snippets.

@bplexico
bplexico / invite_redeemer.rb
Created May 31, 2013 19:55
Extract mark_invite_redeemed
if mark_invite_redeemed == 1
...
private
def mark_invite_redeemed
Invite.update_all('redeemed_at = CURRENT_TIMESTAMP',
['id = ? AND redeemed_at IS NULL AND created_at >= ?', invite.id, SiteSetting.invite_expiry_days.days.ago])
end
@bplexico
bplexico / invite_redeemer.rb
Created May 31, 2013 20:07
Start of final refactoring steps
def redeem
result = nil
Invite.transaction do
if mark_invite_redeemed == 1
# Create the user if we are redeeming the invite and the user doesn't exist
result = create_user_if_missing
# If there are topic invites for private topics
allow_access_to_private_topics(result)
@bplexico
bplexico / invite_redeemer.rb
Created May 31, 2013 20:17
Introduce invited_user
def invited_user
@invited_user ||= get_existing_user
end
@bplexico
bplexico / invite_redeemer.rb
Last active December 17, 2015 23:18
after invited_user introduced
InviteRedeemer = Struct.new(:invite) do
def redeem
result = invited_user
Invite.transaction do
if mark_invite_redeemed == 1
# Create the user if we are redeeming the invite and the user doesn't exist
result = create_user_if_missing
# If there are topic invites for private topics
@bplexico
bplexico / invite_redeemer.rb
Created May 31, 2013 20:42
invite_was_redeemed?
def invite_was_redeemed?
mark_invite_redeemed == 1
end
#results in the new if clause
if invite_was_redeemed?
...
@bplexico
bplexico / invite_redeemer.rb
Created May 31, 2013 20:45
process_invitation method
def process_invitation
add_to_private_topics_if_invited
add_user_to_invited_topics
send_welcome_message
notify_invitee
end
def redeem
result = invited_user
Invite.transaction do
if invite_was_redeemed?
result = create_user_if_missing
process_invitation
end
end
result
@bplexico
bplexico / invite_redeemer.rb
Created May 31, 2013 21:00
rearranged user retrieval
def invited_user
@invited_user ||= get_invited_user
end
def get_invited_user
result = get_existing_user
result ||= create_new_user
result.send_welcome_message = false
result
end
InviteRedeemer = Struct.new(:invite) do
def redeem
Invite.transaction do
process_invitation if invite_was_redeemed?
end
invited_user
end
@bplexico
bplexico / gist:5745021
Created June 9, 2013 20:13
SearchObserver starting point
class SearchObserver < ActiveRecord::Observer
observe :topic, :post, :user, :category
def self.scrub_html_for_search(html)
HtmlScrubber.scrub(html)
end
def self.update_index(table, id, search_data)
table_name = "#{table}_search_data"
foreign_key = "#{table}_id"