I have troubles with this syntax:
AbstractModelClass = Class.new(Sequel::Model) do
def self.inherited(model)
model.one_to_many :associated_model
end
end
class Child < AbstractModelClass
end
/home/alex/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/sequel-5.2.0/lib/sequel/model/associations.rb:1779:in
`[]': odd number of arguments for Hash (ArgumentError)
from
/home/alex/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/sequel-5.2.0/lib/sequel/model/associations.rb:1779:in
`associate'
from
/home/alex/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/sequel-5.2.0/lib/sequel/model/associations.rb:1873:in
`many_to_one'
from /home/alex/project/abstract_model_class.rb:3:in `inherited'
On Wednesday, May 30, 2012 at 9:49:08 PM UTC+3, Jeremy Evans wrote:
>
> On Wednesday, May 30, 2012 10:20:38 AM UTC-7, Michael Granger wrote:
>>
>> > On Saturday, May 26, 2012 7:01:48 PM UTC-7, Jeremy Evans wrote:
>> > > On Friday, May 25, 2012 1:28:43 PM UTC-7, Michael Granger wrote:
>> > > Even though it's an unsupported use, subclassing Sequel::Model works
>> quite well if you're careful. I do it in several projects in which I want
>> to use Sequel::Model, but I can't know where the database is until runtime
>> (e.g., connect info is in a config file, etc.).
>> >
>> > This is probably different from what the original poster is asking. In
>> your case, your model has a backing table, it just isn't known until
>> runtime. He appears to be requesting a way to use a model without a
>> backing table at all.
>>
>> Looking back at what I wrote, I didn't explain myself well, but my
>> case is the same as his *in addition* to runtime loading: both of the
>> above cases subclass Sequel::Model, but don't have a backing table,
>> and then all other model classes inherit from it instead of
>> Sequel::Model directly. Mongrel2::Config is the abstract class in the
>> first case, and WordNet::Model in the second. So instead of:
>>
>> ModelClass < (anonymous model class) < Sequel::Model
>>
>> the inheritance ends up being:
>>
>> ConcreteModelClass < (anonymous model class) < AbstractModelClass <
>> Sequel::Model
>>
>
> Ah. Apparently I misinterpreted the original post. Having an abstract
> model class without a backing table is completely supported, as long as you
> only instantiate subclasses that have a backing table. The recommended way
> to do this in Sequel is to use Class.new:
>
> AbstractModelClass = Class.new(Sequel::Model)
> class AbstractModelClass
> # ...
> end
>
> The problem with the regular form:
>
> class AbstractModelClass < Sequel::Model
> end
>
> Is that it is going to assume that AbstractModelClass has a dataset
> associated with it, when it should not.
>
> Sorry for the misunderstanding.
>
> Thanks,
> Jeremy
>
--
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 https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.