The problem (I think) with that is that "#users" could be an expensive call you only wish to make once. And I don't want to get into memoizing...
<% account.expensive_call_for_users.any? && account.expensive_call_for_users.tap ... %> On Friday, January 25, 2013 2:11:18 PM UTC-8, Godfrey Chan wrote: > > Actually, on second thought, this would do exactly what you wanted, and > It's Just Ruby (tm): > > <% account.users.any? && account.users.tap do |users| %> > > > # ... > <% end %> > > > > > On Fri, Jan 25, 2013 at 2:09 PM, Ngan <[email protected] <javascript:>>wrote: > >> Thank you Godfrey! This does solve 99% of my cases! >> >> @Andrew Using if, the variable "users" is now available everywhere...I >> only want it available in my block. >> >> >> On Friday, January 25, 2013 2:05:31 PM UTC-8, Godfrey Chan wrote: >> >>> 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 <[email protected]> wrote: >>> >>>> I originally brought this up in: https://github.com/rails/** >>>> rails/issues/9067 <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 rubyonra...@googlegroups.**com. >>>> To unsubscribe from this group, send email to rubyonrails-co...@** >>>> googlegroups.com. >>>> >>>> Visit this group at http://groups.google.com/** >>>> group/rubyonrails-core?hl=en<http://groups.google.com/group/rubyonrails-core?hl=en> >>>> . >>>> For more options, visit >>>> https://groups.google.com/**groups/opt_out<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 >> [email protected]<javascript:> >> . >> To unsubscribe from this group, send email to >> [email protected] <javascript:>. >> 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 [email protected]. To unsubscribe from this group, send email to [email protected]. Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
