NUMBER_OF_GUESTS = 50 TablesArrangement.delete_all Expense.delete_all Guest.delete_all ActsAsTaggableOn::Tagging.delete_all ActsAsTaggableOn::Tag.delete_all Group.delete_all Expense.create!(name: 'Photographer', amount: 3000, pricing_type: 'fixed') Expense.create!(name: 'Country house', amount: 6000, pricing_type: 'fixed') Expense.create!(name: 'Catering', amount: 200, pricing_type: 'per_person') Expense.create!(name: 'Flowers', amount: 500, pricing_type: 'fixed') Expense.create!(name: 'Band', amount: 1000, pricing_type: 'fixed') Expense.create!(name: 'Wedding planner', amount: 2000, pricing_type: 'fixed') Expense.create!(name: 'Dress', amount: 1000, pricing_type: 'fixed') Expense.create!(name: 'Suit', amount: 500, pricing_type: 'fixed') Expense.create!(name: 'Rings', amount: 1000, pricing_type: 'fixed') Expense.create!(name: 'Makeup', amount: 200, pricing_type: 'fixed') Expense.create!(name: 'Hair', amount: 200, pricing_type: 'fixed') Expense.create!(name: 'Transportation', amount: 3000, pricing_type: 'fixed') Expense.create!(name: 'Invitations', amount: 200, pricing_type: 'fixed') Expense.create!(name: 'Cake', amount: 500, pricing_type: 'fixed') Group.create!(name: "Jim's guests", icon: "pi pi-heart").tap do |parent| parent.children.create!(name: "Jim's family", icon: "pi pi-users").tap do |family| family.children.create!(name: "Jim's close family", icon: "pi pi-home") family.children.create!(name: "Jim's cousins", icon: "pi pi-home") family.children.create!(name: "Jim's relatives", icon: "pi pi-home") end parent.children.create!(name: "Jim's friends", icon: "pi pi-bullseye") parent.children.create!(name: "Jim's work", icon: "pi pi-desktop").tap do |work| work.children.create!(name: "Jim's besties at work", icon: "pi pi-briefcase") end end Group.create!(name: "Pam's guests", icon: "pi pi-heart-fill").tap do |parent| parent.children.create!(name: "Pam's family", icon: "pi pi-users").tap do |family| family.children.create!(name: "Pam's close family", icon: "pi pi-home") family.children.create!(name: "Pam's cousins", icon: "pi pi-home") family.children.create!(name: "Pam's relatives", icon: "pi pi-home") end parent.children.create!(name: "Pam's friends", icon: "pi pi-bullseye") parent.children.create!(name: "Pam's work", icon: "pi pi-desktop").tap do |work| work.children.create!(name: "Pam's besties at work", icon: "pi pi-briefcase") end end Group.create!(name: "Common guests", icon: "pi pi-users").tap do |parent| parent.children.create!(name: "College friends", icon: "pi pi-calculator") parent.children.create!(name: "High school friends", icon: "pi pi-crown") parent.children.create!(name: "Childhood friends", icon: "pi pi-envelope") end samples = { close_family_a: 10, close_family_b: 10, cousins_a: 20, cousins_b: 15, relatives_a: 15, relatives_b: 10, work_a: 10, work_b: 10, besties_work_a: 5, besties_work_b: 5, college_friends_a: 10, college_friends_b: 10, high_school_friends_a: 10, high_school_friends_b: 10, childhood_friends_a: 10, childhood_friends_b: 10, basket_team_a: 10, football_team_a: 15, dance_club: 10 }.each_with_object([]) do |(affinity_group, count), acc| count.times { acc << affinity_group } end NUMBER_OF_GUESTS.times do guest = Guest.create!(first_name: Faker::Name.first_name, last_name: Faker::Name.last_name, email: Faker::Internet.email, phone: Faker::PhoneNumber.cell_phone) guest.affinity_group_list.add(samples.sample) guest.save! end # Add unbreakable bonds Guest.affinity_group_counts.each do |group| couples = (group.taggings_count / 4).floor guests_involved = Guest.tagged_with(group.name).limit(couples * 2) guests_involved.each_slice(2) do |a, b| bond_name = "#{a.full_name} & #{b.full_name}" a.unbreakable_bond_list.add(bond_name) b.unbreakable_bond_list.add(bond_name) a.save! b.save! end end