Я пытаюсь создать систему репутации с помощью рельсов, используя драгоценный камень, я пытаюсь предоставить значок, когда пользователь создает более 8 комментариев, однако я получаю сообщение об ошибке неопределенного метода каждый раз, когда я создаю комментарий. Я использую устройство, но я могу создать значок вручную. Может кто-нибудь, пожалуйста, помогите? Спасибо !!

Правила значка

# Be sure to restart your server when you modify this file.
#
# +grant_on+ accepts:
# * Nothing (always grants)
# * A block which evaluates to boolean (recieves the object as parameter)
# * A block with a hash composed of methods to run on the target object with
#   expected values (+votes: 5+ for instance).
#
# +grant_on+ can have a +:to+ method name, which called over the target object


module Merit
  class BadgeRules
    include Merit::BadgeRulesMethods

    def initialize

      grant_on 'comments#create',  badge: 'Jr.Critic', temporary: true, to: :user do |comment|
  comment.user.comments.count >= 1 &&  comment.user.comments.count < 2
end
grant_on 'comments#create',  badge: 'Sr.Critic', to: :user do |comment|
  comment.user.comments.count >= 3
end
grant_on 'notes#create',  badge: 'First story ', to: :user do |note|
note.user.notes.count = 1
end

grant_on 'comments#create',  badge: 'Story Teller', to: :user do |comment|
comment.user.comments.count >= 8
end

Merit.rb

# Use this hook to configure merit parameters
Merit.setup do |config|


  Merit::Badge.create!(
  id: 1,
  name: "Jr.Critic",
  description: "Over 5 comments"
)
Merit::Badge.create!(
  id: 2,
  name: "Sr.Critic",
  description: "Over 50 comments"
)

Merit::Badge.create!(
id: 3,
name: "Story Teller",
description: "Over 5 notes!"
)
Merit::Badge.create!(
id: 4,
name: "First story ",
description: "created first story"
)


Merit::Badge.create!(
id: 5,
name: "commenter ",
description: "created more than 5 comments!"
)

И модель пользователя

class User < ApplicationRecord
  has_merit

 end
0
Leo Bogod 27 Май 2017 в 18:51

2 ответа

Лучший ответ

Вам нужно запустить миграцию для комментариев по достоинству. затем перезагрузите сервер и измените эту строку

grant_on 'notes#create',  badge: 'First story ', to: :user do |note|
note.user.notes.count = 1
end

Кому

grant_on 'notes#create',  badge: 'First story ', to: :user do |note|
    note.user.notes.count = >1
    end

Надеюсь, что это работает для вас

0
Leon Bogod 27 Май 2017 в 16:20

Похоже, вы не создали свою ассоциацию для пользователя и комментариев

User.rb также должен иметь наряду с has_merit has_many :comment

class User < ApplicationRecord
  has_merit
  has_many :comments
end

Comment.rb должен иметь belongs_to :user

class Comment < ApplicationRecord
  belongs_to :user
end

Кроме того, не забудьте установить ассоциации для заметок, если вы не сделали этого.

1
Rockwell Rice 27 Май 2017 в 16:25