user、guideline、favourite_guideline の 3 つのモデルがあります (目的は、ユーザーがお気に入りのガイドラインの独自のリストを作成できるようにすることです)。
お気に入りを追加しようとすると、関連付けエラーが発生します
ActiveRecord::HasManyThroughSourceAssociationNotFoundError in GuidelinesController#favourite モデル FavouriteGuideline でソース アソシエーション :favourite または :favourites が見つかりませんでした。'has_many :favourites, :through => :favourite_guidelines, :source => ' を試してください。:guideline または :user のいずれかですか?
class User < ActiveRecord::Base
has_many :guidelines
has_many :favourite_guidelines
has_many :favourites, through: :favourite_guidelines
end
class Guideline < ActiveRecord::Base
belongs_to :user
has_many :favourite_recipes
has_many :favourited_by, through: :favourite_recipes, source: :user
end
class FavouriteGuideline < ActiveRecord::Base
belongs_to :guideline
belongs_to :user
end
ガイドライン コントローラーでの私のお気に入りのアクションは次のとおりです。
def favourite
type = params[:type]
if type == "favourite"
current_user.favourites << @guideline
redirect_to :back, notice: 'You favourited #{@guideline.name}'
elsif type == "unfavourite"
current_user.favourites.delete(@guideline)
redirect_to :back, notice: 'Unfavourited #{@guideline.name}'
else
# Type missing, nothing happens
redirect_to :back, notice: 'Nothing happened.'
end
end