Skip to content

Instantly share code, notes, and snippets.

@luciuschoi
Created October 5, 2016 07:57
Show Gist options
  • Save luciuschoi/827a3011b221425fe8ac48514945c7c6 to your computer and use it in GitHub Desktop.
Save luciuschoi/827a3011b221425fe8ac48514945c7c6 to your computer and use it in GitHub Desktop.
trevari_import_passed_membership
def import_passed_membership(csv_file="trevari_passed_membership.csv")
csv_data = open(csv_file)
csv_rows = CSV.parse(csv_data.read.force_encoding("utf-8"), { headers: true,
converters: :numeric,
header_converters: :symbol })
csv_rows.each do |m|
p m
c = Club.find(m[3])
# raise unless c
u = User.where(phone_number: m[1]).first
# raise unless u
c.applications.where(user_id: u.id, status: Application.statuses["입금 확인"]).first_or_create
c.memberships.where(user_id: u.id).first_or_create
u.add_role(:member)
end
end
@luciuschoi
Copy link
Author

c 를 찾지 못하면 다음으로 넘어가도록 하면 되나요?

@luciuschoi
Copy link
Author

10번 줄을 이렇게 변경하니까 에러가 없어졌습니다.

    begin
      c = Club.find(m[3])
    rescue ActiveRecord::RecordNotFound => e
      next
    end

@luciuschoi
Copy link
Author

최종본은 ...

def import_passed_membership(csv_file="trevari_passed_membership.csv")

  csv_data = open(csv_file)
  csv_rows = CSV.parse(csv_data.read.force_encoding("utf-8"), { headers: true,
                                  converters: :numeric,
                                  header_converters: :symbol })

  csv_rows.each do |m|
    p m
    # raise unless c
    begin
      c = Club.find(m[3])
    rescue ActiveRecord::RecordNotFound => e
      next
    end

    u = User.where(phone_number: m[1]).first
    # raise unless u

    c.applications.where(user_id: u.id, status: Application.statuses["입금 확인"]).first_or_create
    c.memberships.where(user_id: u.id).first_or_create
    u.add_role(:member)
  end
end

@luciuschoi
Copy link
Author

def import_passed_users(csv_file="trevari_passed_users.csv")

  csv_data = open(csv_file)
  csv_rows = CSV.parse(csv_data.read.force_encoding("utf-8"), { headers: true,
                                  converters: :numeric,
                                  header_converters: :symbol })

  users = {}
  csv_rows.each do |u|
    users[u[1]] = {
      name: u[0],
      phone_number: u[1],
      email: u[2],
      fb_name: u[3]
    }
  end

  users.each do |phone, user|

    if user[:email].blank?
      user[:email] = "#{user[:phone_number].gsub("-","_")}@gmail.com"
    end

    if user[:fb_name].blank?
      user[:fb_name] = "-"
    end

    u = User.where(email: user[:email], phone_number: user[:phone_number]).first_or_initialize

    u.name = user[:name]
    puts u.name
    u.fb_name = user[:fb_name]
    u.password = "a"*6
    u.agreement = true
    if u.changed?
      puts "#{u.name} updated"
      u.save
    end
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment