On Jan 28, 6:25 am, Ryan Angilly <[email protected]> wrote:
>
> I also realized that I do crap like this a lot too:
>
> self.owner_object_association ? self.owner_object_association :
> default_thing
>
> Where this would give me:
>
> self.owner_object_association.or_if_blank? default_thing

I really don't like "or_if_blank?"
It feels like it should live in a gem,

partly because it doesn't seem necessary,
and partly because there are too many variants I could see people
needing.

  or_if_nil
  or_if_blank
  or_if_present
  or_if_a_plate_of_chips

But saying that,

A clear distinctinction needs to be made between;

  >> a.blank? ? b : a

and

  >> a.or_if_blank?(b)

namely, in the first "b" only gets evaluated ONLY IF "a" is blank
in the second, "b" ALWAYS get evaluated.

It's not necessarily a problem.
But I worry that we'll see code like;

  >> a.or_if_blank?
(call_a_function_that_does_something_bad_but_also_returns_something)

Perhaps a different approach would be something like this

  >> user.bumblebee
(:full_name, :email, :something_else, :another_fallback)

which is equivalent to;

  >> if user.full_name.present?
  >>  return user.full_name
  >> elsif user.email.present?
  >>   return user.email
  >> elsif user.something_else.present?
  >>   return user.something_else
  >> elsif user.another_fallback.present?
  >>   return user.another_fallback
  >> end

The bumblebee hovers around the user,
looking for a flower with some pollen.

It goes from flower to flower,
trying each method in order,
and when it finds one that isn't empty,
it returns it to the hive.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to