diff --git a/lib/merit/point_rules.rb b/lib/merit/point_rules.rb index 8a92143..fca7ea2 100644 --- a/lib/merit/point_rules.rb +++ b/lib/merit/point_rules.rb @@ -178,7 +178,7 @@ module Merit target_url = AVAILABLE_RULES[rule_name.to_sym][:target_url] return nil if target_url.blank? || point.action.blank? - model = BaseTargetFinder.new(Merit::Rule.new, point.action).get_target_from_database + model = BaseTargetFinder.new(Merit::Rule.new, point.action).get_target_from_database rescue nil model.present? ? target_url.call(model) : nil end diff --git a/test/unit/point_rules_test.rb b/test/unit/point_rules_test.rb index 1c31167..1f5aabe 100644 --- a/test/unit/point_rules_test.rb +++ b/test/unit/point_rules_test.rb @@ -36,4 +36,13 @@ class PointRulesTest < ActiveSupport::TestCase assert_equal comment.url, url end + should 'do not fail when return target url for a point without a related model' do + person = create_user('testuser').person + create_point_rule_definition('article_author') + article = create(TextArticle, :profile_id => person.id, :author => person) + point = person.score_points.last + point.action.stubs(:target_model).returns('Hash') + Merit::PointRules.target_url(point) + end + end -- libgit2 0.21.2