/fundhour

Ruby objects coding exercise, 1 hour timebox

Primary LanguageRuby

Fund Hour Demo

Rules:

  • Fundraiser model
  • Ruby object model
  • Tested
  • 1hr limit

Process: Preparation: Refresh on Ruby. Review: POODR (-Sandi Metz); practice to retrain muscle memory.

Complete design. Do timed Implementation, Push at 1hr (campaign not completed, donation not started)

Principles: “SOLID”; Preserve changeability;
Focus on messages (what) & trusting, not prescribing (how); Test first; Early design, sticking to flexible interface, e.g., hash arguments for constructors, anticipating further definition and changes down the road.

Hardest part is cutting valuable elements from model due to time constraint, creating a workable model in time, but without things I’d like to include.

Ideas considered, cut for time:

  • Super-class person --Donors, Group Manager, Group Members
  • Group —Started with group as campaign attribute, enhance as separate class with time/clarification
  • GroupCampaign (Multiple campaigns per group).
  • Organization (parent organization for Groups, e.g., School with groups Girls Basketball, Varsity Football)
  • Group UsersCampaign message manager
  • Campaign Manager (person)
  • User Auth (donors, group members,
  • Payment processing
  • Marketing
  • SWAG sales
  • Validation of attributes, business rules
  • Donation Followup, thanks, messaging flow
  • Persistence to datastore, skipped per instructions/time constraints.
  • With persistence, add: ** Searchability: self.find (id) #find by id, self.where(attributes) #find by criteria hash