Object#try takes a block. It'll probably take care of most simple cases for
you:

<% account.owner.try do |user| %>
  <!-- This is shown only if account.owner is not nil? -->
<% end %>



On Fri, Jan 25, 2013 at 1:17 PM, Ngan <nganp...@gmail.com> wrote:

> I originally brought this up in:
> https://github.com/rails/rails/issues/9067
>
> Rails paved the way for Object#tap and Object#try...I'd like to propose
> Object#tap_if and its counterpart,Object#tap_unless.
>
> I've been following 37signals conventions of tapping variables in the
> views:
>
> <% account.owner.tap do |user| %>
>   ...
> <% end %>
>
> But, I find myself having to do this a lot...
>
> <% account.owner.tap do |user| %>
>   <% if user %>
>     ...
>   <% end %>
> <% end %>
>
> It would be great if we could do...
>
> <% account.owner.tap_if(:present?) do |user| %>
>   ...
> <% end %>
>
> <% account.users.tap_if(:any?) do |user| %>
>   ...
> <% end %>
>
> The block would only yield if the method evals to true.
> Carlos mentioned that you can add an "if account.owner.present?" at the
> end...
> But there are times when the account.owner (or something else) call is
> expensive and you don't want to call it twice.
>
> Any feedback would be much appreciated.  Thanks!
>
> --
> 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 rubyonrails-core@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-core+unsubscr...@googlegroups.com.
> Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
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 rubyonrails-core@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-core+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to