0

デバイス、アクション、アクションタイプの3つのテーブルがあります。ActionTypesはルックアップテーブルであり、名前とIDに他なりません。関係は次のとおりです。

端末

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

アクション

belongs_to :device
has_one :action_type

ActionType

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

読むのに役立つリソースは、関連付けに関するレールガイドです:ここ

于 2013-02-18T23:07:30.617 に答える