RoR ActiveRecord:通过向后执行连接 - 我的关系不好吗?

时间:2013-02-18 22:55:32

标签: ruby-on-rails rails-activerecord

我有三个表: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的东西,这是ALMOST所做的,但这是它生成的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正在寻找它因为我的关系......我只是不确定哪个部分是错的!

1 个答案:

答案 0 :(得分:0)

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

belongs_to :action_type

要阅读的有用资源是关于关联的rails指南:here