私は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'
)