请注意方法中的两个puts
行。当followers
访问时,结果为空,而当Follower.all
访问时,结果包含一个或多个预期对象。
这怎么可能?
book.rb(型号)
has_many :followers, as: :followable, dependent: :destroy
def followed_by_user?(user)
puts "--- followers: #{followers.inspect}" # EMPTY
puts "--- Follower.all: #{Follower.all.inspect}" # contains expected user
followers.map{|l| l.user_id}.include?(user.id) # returns false
end
答案 0 :(得分:0)
没有逻辑矛盾。第一个puts
显示与此用户实例关联的关注者;第二个puts
正在显示所有关注者,包括与其他用户关联的
因此,第一个集合为空并且第二个集合为非空是完全合理的。