此问题与to相关,显示 has_many:通过关联。我有一个类似的关联,如答案中所示。我将引用参考。
$ rails g model FavoriteRecipe recipe_id:integer user_id:integer
# Join model connecting user and favorites
class FavoriteRecipe < ActiveRecord::Base
belongs_to :recipe
belongs_to :user
end
---
class User < ActiveRecord::Base
has_many :recipes
# Favorite recipes of user
has_many :favorite_recipes # just the 'relationships'
has_many :favorites, through: :favorite_recipes, source: :recipe # the actual recipes a user favorites
end
class Recipe < ActiveRecord::Base
belongs_to :user
# Favorited by users
has_many :favorite_recipes # just the 'relationships'
has_many :favorited_by, through: :favorite_recipes, source: :user # the actual users favoriting a recipe
end
我很想知道这个解决方案是否适用于加入模型的多对多关系,例如FavoriteRecipe
具有布尔属性favorite_set
。在迭代Recipes
时,我想知道当前用户是否已经'收藏'此/ Recipes
。像current_user.recipe.favorite_set?
这样的东西,但当然要通过FavoriteRecipe
加入模型。如果true
显示'FAVORITE SET',则会选择收藏此recipe
。我的实现是一个显示所有“食谱”并显示“最喜欢的设置”的提要,或者为“最喜欢的”一个或多个Recipes
提供选项。
提前致谢。
答案 0 :(得分:0)
为了解决这个问题,我在app/helpers
module ReminderHelper
#Check if user has set reminder for a specific event
def event_reminder_set? user, event
EventReminder.where(user: user, event: event).any?
end
end
我在app/controllers/application_controller.rb
include ReminderHelper
在我看来,我按如下方式使用
<% unless event_reminder_set?(current_or_guest_user, event) %>
REMIND ME
<% else %>
REMINDER SET
<% end %>
这应该与其他模型协会一起使用,这种协会与加入模型的多对多关系,例如FavoriteRecipe