def create_frob( pk, values )
  Frob[ :id=>pk ] || Frob.new( values.merge :id=>pk )
end

create_frob( "foo", :name=>"Forble" )
#=> Error: method id= doesn't exist or access is restricted to it


Oops. Try again.


def create_frob( pk, values )
  Frob.unrestrict_primary_key
  f = Frob[ :id=>pk ] || Frob.new( values.merge :id=>pk )
  Frob.restrict_primary_key
  f
end


Ew...that just won't do. And it maybe restricts when it shouldn't.


module Sequel::Model::ClassMethods
   def unrestrict_primary_key
      if block_given?
         original_value = @restrict_primary_key
         @restrict_primary_key = false
         result = yield
         @restrict_primary_key = original_value
         result
      else
         @restrict_primary_key = false
      end
   end
end

def create_frob( pk, values )
  Frob.unrestrict_primary_key do
    Frob[ :id=>pk ] || Frob.new( values.merge :id=>pk )
  end
end


Ahhhhh. I think that's much better.

What do you think? (Of the idea, not the exact code.) Like Dir.chdir, it 
ensures a particular, necessary set of conditions are met, and then returns the 
state to as it was beforehand.

--

You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=.


Reply via email to