我有两个型号:
富:
class Foo&lt;续集:: 模型 </跨度> (:FOO_TABLE)
set_primary_key [:KEY]
#有很多酒吧 one_to_many:酒吧
结束
酒吧:
class Bar&lt;续集:: 模型 </跨度> (:BAR_TABLE)
# 复合 </跨度> key 尝试加载其Bars,我收到一个错误:
IRB&GT; bars = foo.bars=&GT; Sequel :: DatabaseError:Mysql2 ::错误:‘where子句’中的未知列’BAR_TABLE.foo_id’
在我的续集中指定foreign_key的正确方法是什么 模型 </跨度> ?
编辑
使用MySQL2。
一般来说你想看看 关联的选项 。具体来说,你需要告诉Sequel如何在给定foo的情况下找到正确的“条形图”。
如果您只是在您的外键引用中使用非标准名称 BAR_TABLE , 你可以这样做:
BAR_TABLE
class Foo < Sequel::Model(:BAR_TABLE) one_to_many :bars, :key => :my_foo_id end class Bar < Sequel::Model(:BAR_TABLE) many_to_one :foo, :key => :my_foo_id end
实例/证据:
require 'sequel' DB = Sequel.sqlite DB.create_table(:FOOBOY){ Integer :myd; String :name; primary_key [:myd] } DB.create_table(:BARSTON){ Integer :myd; String :name; foreign_key :my_foo_id, :FOOBOY; primary_key [:myd] } DB[:FOOBOY] << { myd:1, name:'Furst' } DB[:FOOBOY] << { myd:2, name:'Surkind' } DB[:BARSTON] << { myd:1, name:'Bobby', my_foo_id:1 } DB[:BARSTON] << { myd:2, name:'Jimmy', my_foo_id:1 } DB[:BARSTON] << { myd:3, name:'XYZZY', my_foo_id:2 } class Foo < Sequel::Model(:FOOBOY) one_to_many :bars, :key => :my_foo_id end class Bar < Sequel::Model(:BARSTON) many_to_one :foo, :key => :my_foo_id end Foo[1] #=> #<Foo @values={:myd=>1, :name=>"Furst"}> Foo[1].bars #=> [#<Bar @values={:myd=>1, :name=>"Bobby", :my_foo_id=>1}>, #<Bar @values={:myd=>2, :name=>"Jimmy", :my_foo_id=>1}>] Foo[1].bars.last.foo #=> #<Foo @values={:myd=>1, :name=>"Furst"}> Bar.last #=> #<Bar @values={:myd=>3, :name=>"XYZZY", :my_foo_id=>2}> Bar.last.foo #=> #<Foo @values={:myd=>2, :name=>"Surkind"}>