Like:

before_filter do

    result = test?

    unless result
      return  f1 && ( action_name !="show" || f2 )
    end

end

That's playing some "ruby golf" , you can pull that apart to make it as
readable as you want ( honestly I actually perfer 'and' and 'or' but that
would result in some more ()s ).

On Tue, Sep 1, 2015 at 10:46 AM, Colin Law <clan...@gmail.com> wrote:

> On 1 September 2015 at 15:43, Stewart Mckinney <lordma...@gmail.com>
> wrote:
> > I don't see any reason why not to wrap something like this in a
> > before_filter block/lambda. That way you avoid the silly function name,
> and
> > I wouldn't consider that coupling.
>
> I am not entirely sure what you mean, can you show how my code
>
> before_filter :f1, unless: :test?
> before_filter :f2, only:  :show, unless: :test?
>
> would look in that case please
>
> >
> > Also, Liz, I think he means "record or store the relevant information in
> > another format", such if the response was a large object or collection
> and
> > Colin only needed to know that there were more than ten, Colin might set
> > @morethanten to true.
>
> Correct
>
> Colin
>
> >
> > On Tue, Sep 1, 2015 at 10:29 AM, Elizabeth McGurty <emcgur...@gmail.com>
> > wrote:
> >>
> >> Colin, please show your result..
> >>
> >> On Tuesday, September 1, 2015 at 9:04:59 AM UTC-4, Colin Law wrote:
> >>>
> >>> On 1 September 2015 at 13:29, tamouse pontiki <tamous...@gmail.com>
> >>> wrote:
> >>> >
> >>> >
> >>> > On Sat, Aug 29, 2015 at 10:26 AM, Colin Law <cla...@gmail.com>
> wrote:
> >>> >>
> >>> >> On 29 August 2015 at 16:08, tamouse pontiki <tamous...@gmail.com>
> >>> >> wrote:
> >>> >> > can you memoize the result of test? assuming it wouldn't change
> >>> >> > between
> >>> >> > callbacks? otherwise, write one callback and perform all the
> tests,
> >>> >> > including the action check for only show inside it?
> >>> >>
> >>> >> Yes I could do either of those but neither is aesthetically
> pleasing,
> >>> >> which is why I wondered whether there was a better solution.  Will
> >>> >> probably plump for the first as the second filter would have to be
> >>> >> called something like
> >>> >> f1_unless_test_and_f2_if_show_unless_test
> >>> >> for it to make any sense when read as f1 and f2 are unrelated.
> >>> >
> >>> >
> >>> > I completely agree with the lack of aesthetics.
> >>> >
> >>> > Since f1 and f2 are completely unrelated, except for being gated by
> >>> > test?,
> >>> > I'd opt for keeping their invocation separate. Temporal coupling
> isn't
> >>> > useful coupling.
> >>> >
> >>> > Sorry, I've got nothing else. :(
> >>>
> >>> OK, thanks.  I have gone for memorising the intermediate values in the
> >>> test filter as I know they are not going to change within a request.
> >>> I had hoped there might be some clever way of massaging the
> >>> before_filter syntax that would provide a solution but I suspect that
> >>> is not possible.
> >>>
> >>> Cheers
> >>>
> >>> Colin
> >>>
> >>> >
> >>> > Tamara
> >>> >
> >>> >> > On Sat, Aug 29, 2015 at 9:09 AM, Colin Law <cla...@gmail.com>
> wrote:
> >>> >> >>
> >>> >> >> Is there a more efficient way of coding this?
> >>> >> >>
> >>> >> >> before_filter :f1, unless: :test?
> >>> >> >> before_filter :f2, only:  :show, unless: :test?
> >>> >> >>
> >>> >> >> I don't want to call test? twice as it is not trivial.
> >>> >> >>
> >>> >> >> Colin
> >>> >
> >>> > --
> >>> > You received this message because you are subscribed to the Google
> >>> > Groups
> >>> > "Ruby on Rails: Talk" group.
> >>> > To unsubscribe from this group and stop receiving emails from it,
> send
> >>> > an
> >>> > email to rubyonrails-ta...@googlegroups.com.
> >>> > To post to this group, send email to rubyonra...@googlegroups.com.
> >>> > To view this discussion on the web visit
> >>> >
> >>> >
> https://groups.google.com/d/msgid/rubyonrails-talk/CAHUC_t-iRD59RQg9GaMZEpoqHFivKLyTT3sDAZRZeXrTQe%2BBHQ%40mail.gmail.com
> .
> >>> >
> >>> > For more options, visit https://groups.google.com/d/optout.
> >>
> >> --
> >> You received this message because you are subscribed to the Google
> Groups
> >> "Ruby on Rails: Talk" group.
> >> To unsubscribe from this group and stop receiving emails from it, send
> an
> >> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> >> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> >> To view this discussion on the web visit
> >>
> https://groups.google.com/d/msgid/rubyonrails-talk/11e790b5-0c48-47f9-ab64-c03be7a67444%40googlegroups.com
> .
> >>
> >> For more options, visit https://groups.google.com/d/optout.
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Ruby on Rails: Talk" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to rubyonrails-talk+unsubscr...@googlegroups.com.
> > To post to this group, send email to rubyonrails-talk@googlegroups.com.
> > To view this discussion on the web visit
> >
> https://groups.google.com/d/msgid/rubyonrails-talk/CA%2BCQ934yNkeZif%2B-KP_hfwg1XXewVPWP1UCdbH%2B4jEK7vdwH5g%40mail.gmail.com
> .
> >
> > For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLuUfZcpZmyuZxaGE%2BsjABtzSx0%3DJNo-wzZpE0U%3Dk2RPbw%40mail.gmail.com
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CA%2BCQ93613OqnBSM5E24NpJQ5MxknUegq47ruASoZp8E-fSqekg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to