On Jun 21, 1:40 pm, François Beausoleil
<[email protected]> wrote:
> Hi!
>
> I have this:
>
> class User < Sequel::Model(:users)
> one_to_many :contacts
> end
>
> class Contact < Sequel::Model(:contacts)
> end
>
> Calling User.first.contacts.filter(:name => /abc/) raises a
> NoMethodError:
>
> NoMethodError: undefined method `filter' for #<Array:0x00000103660c48>
> from (irb):4
> from /Users/francois/.rvm/gems/ruby-1.9.2-p180@meetphil/bundler/gems/
> rails-391b3739864c/railties/lib/rails/commands/console.rb:45:in
> `start'
> from /Users/francois/.rvm/gems/ruby-1.9.2-p180@meetphil/bundler/gems/
> rails-391b3739864c/railties/lib/rails/commands/console.rb:8:in `start'
> from /Users/francois/.rvm/gems/ruby-1.9.2-p180@meetphil/bundler/gems/
> rails-391b3739864c/railties/lib/rails/commands.rb:40:in `<top
> (required)>'
> from script/rails:6:in `require'
> from script/rails:6:in `<main>'
>
> There must be a good reason for associations to not return datasets.
> Is there any way to get a dataset instead of a collection?
There is. Eager loading can't work if model association methods
return datasets (Sequel doesn't use proxies for associations). Use
contacts_dataset instead of contacts if you want a dataset.
> I'm working on a multi-tenant database, and I would really like to be
> able to continue filtering after going through the current user for
> the contacts available to them.
In addition to using contacts_dataset, you could also pass a block to
contacts:
User.first.contacts{|ds| ds.filter(:name => /abc/)}
Jeremy
--
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=en.