无法从测试中访问多态关联,但可以从浏览器访问

时间:2014-12-02 02:40:51

标签: ruby-on-rails polymorphic-associations

请注意方法中的两个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

1 个答案:

答案 0 :(得分:0)

没有逻辑矛盾。第一个puts显示与用户实例关联的关注者;第二个puts正在显示所有关注者,包括与其他用户关联的

因此,第一个集合为空并且第二个集合为非空是完全合理的。