0

私はdevise、rails 4、およびruby 2.1.0を使用したrailsアプリを持っています。Devise は でuserモデルを使用していconfig.scoped_views = trueます。このウィキに従って、デバイスを使用してメリットを設定しました。ユーザーが登録すると、バッジはデータベースに追加されません - をcreate使用して手動でアクションにバッジを追加すると機能し、バッジcurrent_user.add_badge('1')をビューに表示できます。以下に関連するコードを投稿しました。誰かが私に欠けているものを教えてくれますか? Merit は素晴らしい機能を提供します。私は本当にそれを機能させたいと思っています - ありがとう!

app/controllers/users/registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController
  def create
    @user = build_resource # Needed for Merit
    super
  end

  def update
    @user = resource # Needed for Merit
    super
  end
end

app/models/user.rb

class User < ActiveRecord::Base
  has_merit

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

config/routes.rb

Rails.application.routes.draw do
  devise_for :users, controllers: { registrations: 'users/registrations' }
end

app/models/merit/badge_rules.rb

module Merit
  class BadgeRules
    include Merit::BadgeRulesMethods

    def initialize
      grant_on 'registrations#create', badge: 'just-registered', model_name: 'User'
    end
  end
end

config/initializers/merit.rb

Merit.setup do |config|
  config.checks_on_each_request = true
end

Badge.create!(
  id: 1,
  name: 'just-registered'
)
4

0 に答える 0