Thanks for the insight @geoffharcourt. Really appreciated. I understand where I am wrong now.
The method leader in my model knows too much .
Hence,
def leader
top_group.leader
end
def top_group
# here top would be a scope that returns a specific group that is needed
self.groups.top
end
And instead of using the null object pattern . Perhaps I can handle it in the decorator. Like following.
def president_name
leader.nil? ? "No leader assigned yet" : leader.username
end
Although this solves the problem at hand. I would like to discuss more about the advantage of using the null object pattern might offer in my design.