Ruby on rails RubyonRails活动记录连接

Ruby on rails RubyonRails活动记录连接,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我需要把这两张桌子连接起来,但我似乎做不好 模型 类注册

我需要把这两张桌子连接起来,但我似乎做不好

模型

类注册 类区域 到目前为止我试过的是这个

`test = Region.joins(:registration)`
这会给我这个结果

[,]

看起来我确实加入了这两个表,但我的困境是我还需要属于注册模型的索引。关于结果仅是区域模型中可用的索引

我也试过另一种方法

测试=注册。连接:区域

但这给了我一个错误

“on子句”中的未知列“regions.registration\u id”:选择registrations.*FROMregistrationsINNER JOINregionsONregions.registration\u id=registrations.id``


我同意这个错误,因为当您在表中定义“属于”关系时,我没有索引注册id,该表应该具有它所属表的外键。因此,在您的示例中,如果您的关系类似于区域属于注册,那么区域应该具有注册id。看起来您定义了错误的关系

因此,如果您将在区域中定义注册id并执行以下查询:

Region.joins(:registration) 
您将在结果中看到region表的id以及registration\u id

希望这有助于更改注册型号代码

希望有帮助

class Registration < ActiveRecord::Base
    has_many :regions, inverse_of: :registration, dependent: :destroy
 end

class Region < ActiveRecord::Base
    belongs_to :registration, inverse_of: :regions
end
然后,确保您的Region表正确显示了它与Registration\u id列的注册的关联。如果不包含该列,请继续并创建以下迁移:

rails g迁移将注册添加到区域注册:引用

rake数据库:迁移

现在,您应该能够通过以下方式成功查询:

注册。联接:区域或区域。联接:注册


干杯

这个表看起来像这样的注册:| id | region | id | name | region:| id | name |那么我应该如何在我的模型上定义它们呢?哦。。然后,您应该在Region模型中拥有多个:注册,并且在Registration模型中属于:Region。然后您可以执行查询注册。joins:regioni在运行注册时仍然会遇到相同的错误。joins:region它一直在寻找注册\u id列您可以告诉我您是如何在模型中定义关系的吗?是否喜欢此类regiontest = Registration.joins(:region)
class Registration < ActiveRecord::Base
    has_many :regions, inverse_of: :registration, dependent: :destroy
 end

class Region < ActiveRecord::Base
    belongs_to :registration, inverse_of: :regions
end