好,所以我有一個審查模式和投票模型(Upvotes和Downvotes通過一個單一變量「喜歡」爲藍本,如果其真正的一個給予好評,如果假的一downvote)。這個選票是一個has_many關係,並且是多態的(我希望能夠在稍後的評論中使用它)。如何遍歷Rails中的關聯?
所以在審查模式具有線
has_many :votes, :as => :votable
而且票模型的定義如下
class Vote < ActiveRecord::Base
belongs_to :votable, :polymorphic => true
belongs_to :user
def upvote?
like
end
def downvote?
!like
end
end
現在這樣很好,我能給予好評,downvote和刪除票就好了。但我試圖根據upvotes和downvotes生成一個分數(現在只需簡單地向上投票)。 要做到這一點,我添加了以下的評論模型
def score
up = 0
down = 0
self.votes.each do |v|
if v.upvote?
up += 1
elsif v.downvote?
down += 1
end
end
up-down
end
不過,我總是得到0追溯到答案。錯誤在循環中,因爲我可以將向上或向下變量設置爲它之外的任何變量,並且它們通過。它開始讓我瘋狂,我不知道我會出錯哪裏。
評論模型與用戶/投票有什麼關係? – Kasumi
關係是'has_many:votes,dependent::destroy'用戶模型中還有一些方法可以創建和銷燬投票,檢查用戶是否投票進行審查,並檢查他們投票的方式(使用upvote?和downvote?方法) –