Rails合并表

时间:2011-07-02 21:10:18

标签: mysql ruby-on-rails-3 merge

我有两张桌子:Members and Addresses。如何在我的模型中将这两个表合并在一起,以便我可以将所有列组合在一起?例如,成员有一个名为position的列,而地址有一个名为street的列。我怎么能这样做,以便我可以在同一个虚拟表中有位置和地址。这有合并功能吗?

1 个答案:

答案 0 :(得分:0)

不确定为什么需要创建单独的模型,您可以使用基本的Ruby构造:

我假设Member有一个名为address_id的列,该成员是belongs_toAddress。这将自动为您关联联接。

所以你需要做的就是这样:

class Address < ActiveRecord::Base
end

class Member < ActiveRecord::Base
  belongs_to :address
end

member = Member.create(:address => Address.find(123))

如果您想获取地址和位置字段,请转到:

member = Member.find(456)
position = member.address.position

或者也许:

Member.joins(:address).select("members.position, addresses.street")

不确定您要做什么,但如果它是非常具体的,您还可以尝试在数据库中创建一个View,然后为它创建一个模型,将其视为常规表。