我有三个表: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 正在寻找它是因为我的人际关系......我只是不确定哪一部分是错误的!