I’m hoping someone can help me with a strange glitch I’ve run into…
I've spent a bunch of time narrowing down the issue, and *think* the problem is with a table which has a foreign key field named “model”. Unfortunately it's a legacy database so I can’t just change the field name to fix the issue. In my attempts to resolve the issue I have added a column alias of :model_id pointing to :model, then specified :model_id as the association key – that initially fixed all my issues, but now I've found instances where that causes other problems which get fixed if I change the key back to :model, which then breaks the original queries. While I'm feeling a bit stumped, I've narrowed the scope down to two different errors which alternate depending on whether I use :model or :model_id as the association key. I have the following tables and relationships defined (extraneous fields removed for clarity). Note, I have this database and models wrapped in a module Inventory to keep it separate from another database my application requires access to, hence the references to "Inventory::Device" and such. Device (tbl_equipment) ------------------------------- - id_equipment (key) - model (foreign key for models) def_column_alias(:model_id, :model) many_to_one :device_model, :key=>:model_id, :primary_key=>:id_model, :class =>'Inventory::Device_Model', :select=>[:id_model, :model_description, : apple_model_number, :type] Device_Model (tbl_model) --------------------------------- - id_model (key) one_to_many :devices, :key => :model_id, :primary_key => :id_model, :class=> 'Inventory::Device' *First error: Eager graph not working with :model_id as key* When I define the association using the :model_id column_alias, and do a search like: Inventory::Device.select(:serial_number, :nom_ordinateur).appletvs. eager_graph(:site, :device_model).order{site[:school_short_name]}.all I get the following error: /Library/Ruby/Gems/2.3.0/gems/sequel-5.12.0/lib/sequel/adapters/tinytds.rb: 205:in `fields': TinyTds::Error: Invalid column name 'MODEL_ID'. (Sequel::DatabaseError) By playing around I've managed to narrow the issue down to eager_graphing the :device_model. If I remove that part of the query it works. It also works fine if I change the association to use :model as the key. *Second error: Can't express Device as a SQL literal error with :model as key* Once I switch the key back to :model, if I query and get a Device object, but then try to access the device_model accessor, I get an error that the Device cannot be expressed as a SQL literal, for example, if I query a device like below: results = Inventory::Device.where(:serial_number => "serial").eager(:user, : site, :device_model).first And then try to access results.device_model I get the error. I get the same thing if I remove the eager option. If I switch the association key back to :model_id then this works but the first error kicks in again. -- 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 sequel-talk+unsubscr...@googlegroups.com. To post to this group, send email to sequel-talk@googlegroups.com. Visit this group at https://groups.google.com/group/sequel-talk. For more options, visit https://groups.google.com/d/optout.