When I have this pattern
sign_me(@user, :event => :authentication, :subdomain =>
subdomain)
how can I write it to avoid sending the :subdomain option if
subdomain.nil?
( if possible ..)
sign_me(@user, :event => :authentication #?, :subdomain =>
subdomain unless subdomain.nil? )
on 2012-11-09 08:29
on 2012-11-09 09:13
On Fri, Nov 9, 2012 at 3:27 PM, Erwin <yves_dufour@mac.com> wrote: > When I have this pattern > > sign_me(@user, :event => :authentication, :subdomain => subdomain) > > how can I write it to avoid sending the :subdomain option if > subdomain.nil? ( if possible ..) > > sign_me(@user, :event => :authentication #?, :subdomain => > subdomain unless subdomain.nil? ) > I'm not sure if it's possible to do it in a single line (as far as you want to have a tidy code) opts = { event: :authentication } opts[:subdomain] = subdomain if subdomain sign_me @user, opts > > > --
on 2012-11-09 10:27
On 9 November 2012 07:27, Erwin <yves_dufour@mac.com> wrote: > When I have this pattern > > sign_me(@user, :event => :authentication, :subdomain => subdomain) > > how can I write it to avoid sending the :subdomain option if subdomain.nil? > ( if possible ..) > > sign_me(@user, :event => :authentication #?, :subdomain => subdomain > unless subdomain.nil? ) You could try sign_me(@user, :event => :authentication, (:subdomain => subdomain unless subdomain.nil?) ) or sign_me(@user, :event => :authentication, :subdomain => (subdomain unless subdomain.nil?) ) Colin
on 2012-11-09 10:39
On Fri, Nov 9, 2012 at 5:25 PM, Colin Law <clanlaw@googlemail.com> wrote: > subdomain > > unless subdomain.nil? ) > > You could try > sign_me(@user, :event => :authentication, (:subdomain => > subdomain unless subdomain.nil?) ) > I was surprised that you answered this Colin so I tried it out but I got a syntax error >> app.root_path(foo: 'me', (bar: 'blah' if false)) SyntaxError: (irb):17: syntax error, unexpected tLABEL app.root_path(foo: 'me', (bar: 'blah' if false)) ^ (irb):17: syntax error, unexpected ')', expecting tASSOC from /home/jim/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.2/lib/rails/commands/console.rb:47:in `start' from /home/jim/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.2/lib/rails/commands/console.rb:8:in `start' from /home/jim/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.2/lib/rails/commands.rb:41:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>' > or > sign_me(@user, :event => :authentication, :subdomain => > (subdomain unless subdomain.nil?) ) > and this still passes subdomain as a key if used in a hash but if used in a routes helper, this will work :D >> app.root_path(foo: 'me', bar: ('blah' if false)) => "/?foo=me" > > https://groups.google.com/d/msg/rubyonrails-talk/-.... > For more options, visit https://groups.google.com/groups/opt_out. > > > --
on 2012-11-09 11:15
On 9 November 2012 09:37, Jim Ruther Nill <jvnill@gmail.com> wrote: >> > >> subdomain unless subdomain.nil?) ) > from > /home/jim/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.2/lib/rails/commands/console.rb:47:in > `start' > from > /home/jim/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.2/lib/rails/commands/console.rb:8:in > `start' > from > /home/jim/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.2/lib/rails/commands.rb:41:in > `<top (required)>' > from script/rails:6:in `require' > from script/rails:6:in `<main>' I am not surprised that did not work, my answer was not intended to convey any suggestion that it would work, just something that would be interesting to try. > >> >> or >> sign_me(@user, :event => :authentication, :subdomain => >> (subdomain unless subdomain.nil?) ) > > > and this still passes subdomain as a key if used in a hash but if used in a > routes helper, this will work :D Yes, it will pass the subdomain as nil, so it depends on the context whether this is satisfactory. Colin
on 2012-11-09 14:46
I have a related question.
I was suggesting Erwin to use just:
sign_me(@user, :event => :authentication #?, :subdomain => subdomain)
because if subdomain is nil, sign_me should correctly handle it.
I mean, in an hypothetical sign_in method I'd write:
def sign_me(user, options)
if options[:subdomain]
# do_something
end
end
if subdomain is nil the method handles it correctly.
but with this code:
def sign_me(user, options)
if options.has_key? :subdomain
# do_something
end
end
this goes wrong ("options.has_key? :subdomain" is true)! So I'd say the
first implementation seems more correct, do you agree with me or I'
missing something important about checking hash parameters?
on 2012-11-09 16:33
On 9 November 2012 13:44, Tommaso Visconti <tommaso.visconti@gmail.com> wrote: > # do_something > end > end > > if subdomain is nil the method handles it correctly. That is the way I would do it. Colin
on 2012-11-09 17:20
Thanks Colin I finally decided to keep the :subdomain option and let the method decide about what to do with it ( seems to be the common pattern) Le vendredi 9 novembre 2012 10:26:34 UTC+1, Colin Law a crit :
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.