2016-08-23 17 views
0
を、複数のテーブルを結合する固定

私は複数のテーブルは、アクティブレコード協会

アクションがあります。

id 
line_id 
devise_id 
item_id 

コメント:

id 
action_id 
body 

項目:

id 
name 

工夫:

id 
name 

ライン:

id 
name 

モデル: ActionModel:

belongs_to :devise, :foreign_key => 'devise_id' 
    belongs_to :item, :foreign_key => 'item_id' 
    belongs_to :line, :foreign_key => 'line_id' 
    has_many :comments 

CommentModel:

belongs_to :action, :foreign_key => 'item_id' 
has_many :items, through: :actions 

ItemModel:

has_many :items, dependent: :destroy 
    has_many :devises, through: :actions 
    has_many :lines, through: :actions 

DeviseModel:

has_many :actions, dependent: :destroy 
    has_many :items, through: :actions 
    has_many :lines, through: :actions 

がLineModel:私の中action.comment.bodyaction.item.nameを取得するために

def index 
@actions = Action.joins(:item, :comment) 

:私の行動制御装置において

has_many :actions, dependent: :destroy 
    has_many :devises, through: :actions 
    has_many :lines, through: :actions 
    has_many :comments, through: :actions 

、私はこのような何かをしたいですビュー。

誰かがそれを行う方法があるかどうかアドバイスできますか?

答えて

1

あなたはすでにあなたはそれがアクションのすべてのコメントやアイテムを取得します協会

@actions = Action.includes(:item, :comments) 

を含めることができますCommentモデルでaction_id

class Comment 
    belongs_to :action 
end 

を持っているとして、これを変更する必要があります。

そして、あなたは、私は#のために未定義のメソッド `コメント」を得た

action.comments.each do |comment| 
    # Loop over the comments 
    comment.body 
end 
# and 
action.item.name 
+0

呼び出すことができます。<処置:0x0000000d987e18> – Geeedas

+0

は、ああ、私の悪い行動は –

+0

アップ[日付けの私の答え –