我有三个模型:user、guideline 和 favourite_guideline(目的是用户可以创建自己喜欢的指南列表)。
我在尝试添加收藏夹时遇到关联错误
ActiveRecord::HasManyThroughSourceAssociationNotFoundError in GuidelinesController#favourite Could not find the source association(s) :favourite or :favourites in model FavouriteGuideline. Try 'has_many :favourites, :through => :favourite_guidelines, :source => '. Is it one of :guideline or :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
指南 Controller 中我最喜欢的操作是:
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
最佳答案
好的,
Try 'has_many :favourites, :through => :favourite_guidelines, :source => '. Is it one of :guideline or :user?
这是:指南。
has_many :favourites, through: :favourite_guidelines, source: :guideline
:source Specifies the source association name used by has_many :through queries. Only use it if the name cannot be inferred from the association. has_many :subscribers, :through => :subscriptions will look for either :subscribers or :subscriber on Subscription, unless a :source is given.
来自 documentation :)
关于ruby-on-rails - 有_许多 :through association error 'could not find the source association' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14840344/