0

我有三个表:Devices、Actions 和 ActionTypes。ActionTypes 是一个查找表 - 只有名称和 ID。以下是关系:

设备

has_many :actions
has_many :action_types, :through => :actions
has_many :tasks

行动

belongs_to :device
has_one :action_type

动作类型

has_many :actions
has_many :devices, :through => :actions

我对 Rails 很陌生,所以我觉得这些关系不正确 - 我的目标是能够使用类似 @device.action_types 的东西,这几乎是在做的,但这是它在这种情况下生成的 SQL :

SELECT "action_types".* FROM "action_types" INNER JOIN "actions" ON "action_types"."action_id" = "actions"."id" WHERE "actions"."device_id" = 1

这将是完美的,除了它应该加入 action_types.id = actions.action_type_id 。没有 actiontypes.action_id (不应该有),而且我知道 AR 正在寻找它是因为我的人际关系......我只是不确定哪一部分是错误的!

4

1 回答 1

0

如果您希望表操作具有 action_type_id,那么您的模型操作需要:

belongs_to :action_type

一个有用的资源是关于关联的 Rails 指南:这里

于 2013-02-18T23:07:30.617 回答