Commit 60cdf17df1f5157b5d789282cfea4a2d623a42c4
1 parent
55909011
Exists in
master
and in
1 other branch
Avoid errors matching condition on badges and points
Showing
2 changed files
with
7 additions
and
6 deletions
Show diff stats
lib/merit/badge_rules.rb
| @@ -38,7 +38,7 @@ module Merit | @@ -38,7 +38,7 @@ module Merit | ||
| 38 | action: 'vote#create', | 38 | action: 'vote#create', |
| 39 | default_threshold: 5, | 39 | default_threshold: 5, |
| 40 | to: lambda {|vote| vote.voteable.author}, | 40 | to: lambda {|vote| vote.voteable.author}, |
| 41 | - value: lambda { |vote, author| Vote.for_voteable(vote.voteable).where('vote > 0').count } | 41 | + value: lambda { |vote, author| vote.voteable ? Vote.for_voteable(vote.voteable).where('vote > 0').count : 0} |
| 42 | } | 42 | } |
| 43 | ], | 43 | ], |
| 44 | negative_votes_received: [ | 44 | negative_votes_received: [ |
| @@ -54,7 +54,7 @@ module Merit | @@ -54,7 +54,7 @@ module Merit | ||
| 54 | action: 'vote#create', | 54 | action: 'vote#create', |
| 55 | default_threshold: 5, | 55 | default_threshold: 5, |
| 56 | to: lambda {|vote| vote.voter}, | 56 | to: lambda {|vote| vote.voter}, |
| 57 | - value: lambda { |vote, voter| Vote.for_voter(voter).count } | 57 | + value: lambda { |vote, voter| voter ? Vote.for_voter(voter).count : 0 } |
| 58 | } | 58 | } |
| 59 | ], | 59 | ], |
| 60 | friendly: [ | 60 | friendly: [ |
| @@ -109,7 +109,7 @@ module Merit | @@ -109,7 +109,7 @@ module Merit | ||
| 109 | action: 'vote#create', | 109 | action: 'vote#create', |
| 110 | default_threshold: 5, | 110 | default_threshold: 5, |
| 111 | to: lambda {|vote| vote.voter}, | 111 | to: lambda {|vote| vote.voter}, |
| 112 | - value: lambda { |vote, voter| voter.votes.where('vote > 0').count } | 112 | + value: lambda { |vote, voter| voter ? voter.votes.where('vote > 0').count : 0 } |
| 113 | }, | 113 | }, |
| 114 | { | 114 | { |
| 115 | action: 'comment#create', | 115 | action: 'comment#create', |
| @@ -161,6 +161,7 @@ module Merit | @@ -161,6 +161,7 @@ module Merit | ||
| 161 | end | 161 | end |
| 162 | # pass source and to for different situations | 162 | # pass source and to for different situations |
| 163 | action = (badge.custom_fields || {}).fetch(s[:action], {}) | 163 | action = (badge.custom_fields || {}).fetch(s[:action], {}) |
| 164 | + debugger if source.is_a? Vote | ||
| 164 | can_be_granted &= s[:value].call(source, to) >= action.fetch(:threshold, s[:default_threshold]).to_i | 165 | can_be_granted &= s[:value].call(source, to) >= action.fetch(:threshold, s[:default_threshold]).to_i |
| 165 | end | 166 | end |
| 166 | can_be_granted | 167 | can_be_granted |
lib/merit/point_rules.rb
| @@ -65,7 +65,7 @@ module Merit | @@ -65,7 +65,7 @@ module Merit | ||
| 65 | value: lambda {|vote| vote.vote}, | 65 | value: lambda {|vote| vote.vote}, |
| 66 | description: _('Author of a voted content'), | 66 | description: _('Author of a voted content'), |
| 67 | default_weight: 20, | 67 | default_weight: 20, |
| 68 | - condition: lambda {|vote, profile| profile.nil? or vote.voteable.profile == profile } | 68 | + condition: lambda {|vote, profile| profile.nil? or (vote.voteable and vote.voteable.profile == profile) } |
| 69 | }, | 69 | }, |
| 70 | vote_voteable: { | 70 | vote_voteable: { |
| 71 | action: 'vote#create', | 71 | action: 'vote#create', |
| @@ -75,7 +75,7 @@ module Merit | @@ -75,7 +75,7 @@ module Merit | ||
| 75 | value: lambda {|vote| vote.vote}, | 75 | value: lambda {|vote| vote.vote}, |
| 76 | description: _('Voted content'), | 76 | description: _('Voted content'), |
| 77 | default_weight: 30, | 77 | default_weight: 30, |
| 78 | - condition: lambda {|vote, profile| profile.nil? or vote.voteable.profile == profile } | 78 | + condition: lambda {|vote, profile| profile.nil? or (vote.voteable and vote.voteable.profile == profile) } |
| 79 | }, | 79 | }, |
| 80 | vote_voter: { | 80 | vote_voter: { |
| 81 | action: 'vote#create', | 81 | action: 'vote#create', |
| @@ -84,7 +84,7 @@ module Merit | @@ -84,7 +84,7 @@ module Merit | ||
| 84 | value: lambda {|vote| 1}, | 84 | value: lambda {|vote| 1}, |
| 85 | description: _('Voter'), | 85 | description: _('Voter'), |
| 86 | default_weight: 10, | 86 | default_weight: 10, |
| 87 | - condition: lambda {|vote, profile| profile.nil? or vote.voteable.profile == profile } | 87 | + condition: lambda {|vote, profile| profile.nil? or (vote.voteable and vote.voteable.profile == profile) } |
| 88 | }, | 88 | }, |
| 89 | friends: { | 89 | friends: { |
| 90 | action: 'friendship#create', | 90 | action: 'friendship#create', |