Skip to content

Instantly share code, notes, and snippets.

@slawosz
Forked from paneq/test.rb
Created October 15, 2011 21:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slawosz/1290158 to your computer and use it in GitHub Desktop.
Save slawosz/1290158 to your computer and use it in GitHub Desktop.
Which version do you prefere?
require 'test/unit'
class KeyTest < Test::Unit::TestCase
def test_key
object = Object.new
assert_equal(:submit, object_key(object))
def object.persisted?; true end
assert_equal(:update, object_key(object))
def object.persisted?; false end
assert_equal(:create, object_key(object))
end
end
def object_key
if @object && @object.respond_to?(:persisted?)
@object.persisted? ? :update : :create
else
:submit
end
end
def object_key
return :submit unless @object && @object.respond_to?(:persisted?)
return @object.persisted? ? :update : :create
end
def object_key
# assume that nil does not respond to :persisted? and if it does, then respect that
return :submit unless @object.respond_to?(:persisted?)
return @object.persisted? ? :update : :create
end
def object_key
if @object && @object.respond_to?(:persisted?) && @object.persisted?
:update
elsif @object && @object.respond_to?(:persisted?)
:create
else
:submit
end
end
def object_key
return :submit if ! persistable?(@object)
return :update if ! @object.persisted?
return :create if @object.persisted?
end
def persistable?(object)
object && object.respond_to?(:persisted?)
end
def object_key
return :submit unless @object.respond_to?(:persisted?)
return :update if @object.persisted?
return :create
end
persisted = @object.respond_to?(:persisted?) ? @object.persisted? : nil
case persisted
when true then :update
when false then :create
else :submit
end
def object_key(object)
object.persisted? ? :update : :create
rescue; :submit
end
def object_key(object)
object.persisted? ? :update : :create rescue NoMethodError :submit
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment