2016-11-03 3 views
0

все,Итерация через 'среднюю' модель

Я относительно новичок в Rails и нуждаюсь в небольшой помощи.

Я пытаюсь выполнить итерацию через «Chorelists», которая содержит идентификаторы для «Пользователей» и «Часов». Ассоциации для обязанностей и пользователей - это «has_many», а для хореллистов - «принадлежит» всем другим. Хорелисты хорошо сохраняют (консоль выдает это) с правильными идентификаторами для пользователей и работой, но я не могу понять синтаксис, чтобы перебирать их в представлении «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 

Что бы вы положили в .each перебирать chorelist текущего пользователя, чтобы получить фактические имена рутины?

ответ

1

Chorelist функционирует как модель «присоединения»; его цель состоит в присоединении к User с Chore.

Чтобы получить список Chores для данного User, вы хотите создать has_many :through отношения в User модели.

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, как это происходит –

Смежные вопросы