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列您可以告诉我您是如何在模型中定义关系的吗?是否喜欢此类region
test = 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