在Rails中加入两个表但不在主键上

时间:2011-06-03 15:33:21

标签: mysql ruby-on-rails

过去12小时我一直试图这样做,我无法弄清楚这一点。

我有两张桌子:

数据:
data_id(主键)
数据文本
userid int

用户:
id(主键)
姓名文本
电子邮件文本

我希望能够提取数据,以便我可以获得用户信息,data.userid与users.id一起加入

这是一个非常简单的SQL查询,但在Rails中似乎几乎不可能..我错过了一些基本的东西吗?

我收到错误消息: Mysql ::错误:'where子句'中的未知列'users.data_id':SELECT * FROM users WHERE(users。data_id = 2)

有人可以用非常简单的方式向我解释如何实现这个目标吗?

由于

2 个答案:

答案 0 :(得分:1)

您需要遵循Rails转换,例如主键称为“id”。还有其他人,您可能需要查看Rails Guides

在这个具体的例子中,可能会引起你兴趣的是多元化,data/datum

这应该让你前进:

TABLES

Datas:
  id:      integer (autoinc)
  data:    text
  user_id: integer (foreign key)

Users:
  id:      integer (autoinc)
  name:    varchar
  email:   varchar

顺便说一句,最好使用迁移创建表,而不是手动创建表。

模型

class Data < AR:Base
  belongs_to :user
end

class User < AR::Base
  has_many :datas
end

使用率

u = User.first
u.datas

答案 1 :(得分:0)

怎么样:

@data = Data.find(params[:id])
@data.user.name

您点击ID为2的数据。