On Wednesday, August 8, 2012 9:27:12 AM UTC-7, Miko wrote:
>
> Hello all, 
>
> Have been playing with the class table inheritance plugin and am getting 
> some unexpected results.  Here's a simplified version of my schema:
>
>     create_table :messages do
>       primary_key :id
>       varchar  :kind, :size => 40, :null => false, :index => true
>       text     :body
>     end
>
>     create_table :phone_calls do
>       foreign_key :id, :messages, :key => :id, :delete => :cascade, 
> :primary_key => true
>       DateTime :called_at, :timezone => false
>     end
>
> And my classes snippet:
>
>     class Message
>         plugin :class_table_inheritance, :key => :kind  
>         # have also tried adding :table_map => { :Message => 
> :messages, :PhoneCall => :phone_calls}  to the above, to no avail
>     end
>
>     class PhoneCall < Message
>
>     end
>
> I seeded my Postgres db with data that looks like this (portions removed 
> for brevity):
>  
>     Messages:
>
> id |   kind    
> ----+-----------
>   1 | Message
>   2 | Message
>   3 | Message
>   4 | PhoneCall
>
>
>     PhoneCall:
>
> id 
> ----
>   4
>
>
> Based upon the documented example, my expectation was that running 
> Message.all would yield:
>
>  # [ <#Message>, <#Message>, <#Message>, <#PhoneCall>]
>
>
> However I'm instead receiving:
>
>  # [ <#Message>, <#Message>, <#Message>, <#Message>]
>
>
> So attempts to call methods defined only on the PhoneCall class (i.e. when 
> rendering the collection) lead to 'undefined method' errors. 
>
> Any insight on where I might be going wrong would be appreciated.  As 
> always, thanks for the help!
>

Seems to work OK here:

    DB.create_table :messages do
          primary_key :id
          varchar  :kind, :size => 40, :null => false, :index => true
          text     :body
        end
    DB.create_table :phone_calls do
          foreign_key :id, :messages, :key => :id, :delete => :cascade, 
:primary_key => true
          DateTime :called_at, :timezone => false
        end
    class Message < Sequel::Model
      plugin :class_table_inheritance, :key => :kind
    end
    class PhoneCall < Message
    end
    DB[:messages].insert(:kind=>'PhoneCall')
    Message.all
    # => [#<PhoneCall @values={:id=>1, :kind=>"PhoneCall", :body=>nil}>]

If it still isn't working for you, please reply with a self contained 
example showing the problem.

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sequel-talk/-/LH_ahrJslacJ.
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.

Reply via email to