通过'中间'模式的迭代

问题描述:

全部,通过'中间'模式的迭代

我是比较新的Rails,需要一点帮助。

我正试图通过包含'Users'和'Chores'ID的'Chorelists'进行迭代。杂事和用户的关联是'has_many',而编舞者的关联是'belongs_to'。 Chorelists可以很好地保存(控制台承担了这一点),为用户和杂事提供正确的ID,但是我无法弄清楚在'savelist#display'视图中遍历它们的语法。

任何帮助将不胜感激!

class SaveListController < ApplicationController 

before_filter :authenticate_user! 

def index 

@chorelist = Chorelist.create(user_id: params[:user_id], chore_id: params[:chore_id]) 

redirect_to pick_chores_path 

end 


def display 

@chorelist = Chorelist.all 

@user = User.find(current_user.id) 

end 

end 

你会在每个迭代通过当前用户的chorelist得到实际的杂项名称?

Chorelist作为“连接”模型运行;其目的是加入UserChore

要获得Chores列表对于给定User,你要建立在User模型has_many :through关系。

class User 
    has_many :chorelists 
    has_many :chores, through: :chorelists 
end 

class Chorelist 
    belongs_to :user 
    belongs_to :chore 
end 

采用这种设置,该User模型将获得chores集合,你可以遍历。

<ul> 
    <% @user.chores.each do |chore| %> 
    <li><%= chore.name %></li> 
    <% end %> 
</ul> 
+0

嗯......它告诉我,“无法找到关联:模型用户chorelist” – Justin

+0

但我在那里有'通过'语法。 – Justin

+0

很抱歉!我更新了上面的代码片段以放入缺失的关联声明。 LMK怎么回事 –