通过'中间'模式的迭代
问题描述:
全部,通过'中间'模式的迭代
我是比较新的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
作为“连接”模型运行;其目的是加入User
与Chore
。
要获得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>
嗯......它告诉我,“无法找到关联:模型用户chorelist” – Justin
但我在那里有'通过'语法。 – Justin
很抱歉!我更新了上面的代码片段以放入缺失的关联声明。 LMK怎么回事 –