我创建了一个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
我想我必须在Star.rb中创建一个named_scope,它会查看是否有一个现有的星形记录,其中workout_id与workout.id匹配,而current_user.id匹配该锻炼的star.user_id匹配。只是键入这个让我困惑。请帮忙。
答案 0 :(得分:0)
您可以创建has_many ..., :through => ...
关系,然后使用#include?
检查关联。
# User
has_many :starred_workouts, :class_name => 'Workout', :through => :stars
# View
<% if current_user.starred_workouts.include? workout %>
...