Как создать «звездную» систему для ресурса и написать условия на основе ассоциации - PullRequest
0 голосов
/ 28 февраля 2011

Я создал приложение Ruby on Rails (2.3.9), где пользователи могут записывать тренировки.Я пытаюсь реализовать «звездную» систему, которая позволила бы пользователю logged_in отмечать тренировки других пользователей, которых они хотят запомнить.

Я делаю это, создавая ресурс Star (ассоциации ниже).Я успешно создаю удаление записей в моей таблице Star и теперь хочу условно отобразить код представления, основываясь на том, что current_user уже начал тренировку.

Я показываю все тренировки через партиал для _workouts.html.erb.Для каждой тренировки я бы хотел отобразить <% remote_form_for [workout, Star.new]... или You have already starred this workout.

Workout :has_many => :stars

User :has_many => :stars

Star :belongs_to => :workouts
Star :belongs_to => :users

Я предполагаю, что мне нужно будет создать named_scope в Star.rb, который проверяет, существует ли существующая звездная запись, где workout_id соответствует workout.id и где current_user.id совпадает со звездой.user_id соответствует для этой тренировки.Это смущает меня просто печатать это.Пожалуйста помоги.

1 Ответ

0 голосов
/ 28 февраля 2011

Вы можете создать отношение has_many ..., :through => ..., а затем использовать #include? для проверки связи.

# User
has_many :starred_workouts, :class_name => 'Workout', :through => :stars

# View
<% if current_user.starred_workouts.include? workout %>
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...