Skip to content

Instantly share code, notes, and snippets.

@rinaldifonseca
Created June 7, 2012 19:48
Show Gist options
  • Save rinaldifonseca/2891145 to your computer and use it in GitHub Desktop.
Save rinaldifonseca/2891145 to your computer and use it in GitHub Desktop.
DCI Example
#model / Data object
class User
attr_reader :name, :approved
def initialize name
@name = name
@approved = false
end
def approved?
@approved
end
def save!
end
end
#context
class UserApprover
attr_reader :member
def initialize user
@member = user.extend Member
end
def approve_user
member.approve
save_changes
end
private
def save_changes
member.save!
end
#roles
module Member
def approve
@approved = true
end
def block
@approved = false
end
end
end
user = User.new("Rinaldi")
UserApprover.new(user).approve_user
p user.approved?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment