Evening…

I'm on Sequel 4.6.0 and want to use it to build a web application with
Padrino and test it with RSpec. I did not find any public project of
that combination that allowed me to look how others work with it so I'm
advancing slowly with 20 tabs of documentation open in my browser. :)

At the moment I'm writing tests for my models. And it seems that if I'm
trying to creating an associated record I get this exception:

->  Sequel::Error: invalid associated object, cannot save

although I have set "raise_on_save_failure=false" which indeed works
when I'm trying to save invalid model records.

This is my model:

class VirtualDomain < Sequel::Model
  one_to_many :virtual_users, :key => 'domain_id'

  plugin :validation_helpers
  def validate
    …some validation
  end
end

class VirtualUser < Sequel::Model
  many_to_one :virtual_domain, :key => 'domain_id'

  plugin :validation_helpers
  def validate
    …some validation
  end
end

I have set this before connecting to my MySQL database:

Sequel::Model.raise_on_save_failure = false

Now what I'm trying in my tests (or on the console):

> domain=VirtualDomain.create(:name=>'example.com')
> domain.add_virtual_user(:email=>'invalid@address', :password=>'tooshort')
Sequel::Error: invalid associated object, cannot save

[For some reason I can't even catch that exception from RSpec like
expect(…).to raise_error]

A valid workaround seems to be:

> domain=VirtualDomain.create(:name=>'example.com')
> user=VirtualUser.new(:email=>'invalid@address', :password=>'tooshort')
> expect(user).to be_valid

I have basically no idea of the Sequel core itself. But it seems to me
like the truth might be somewhere here:
https://github.com/jeremyevans/sequel/blob/dde03831d556570f9c60826f6fdf304febd2e339/lib/sequel/model/associations.rb#L1445
Perhaps a simple condition check if raise_on_save_failure is set before
raising that error?

Any hints?

Thanks
 Christoph

-- 
A distributed system is one in which I cannot get something done
because a machine I've never heard of is down. (Leslie Lamport)

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to