2016-03-21 24 views
0

Ich baue eine Subskriptions-Site mit dem Koudoku-Juwel und versuche, die Autorisierung meines Lessons-Inhalts mit Cancancan zu blockieren, bis ein registrierter Benutzer ein Abonnement hat, aber ich habe Probleme beim Einrichten der Datei "funity.rb". Geräte ebenfalls verwenden. Ich möchte die Aktion Lessons: show so lange blockiert halten, bis ein Benutzer ein Abonnement kauft. Ich kann die Lektionen sperren, aber ich kann die Sprache nicht finden, um sie für Abonnenten freizuschalten.So überprüfen Sie, ob ein Benutzer ein Abonnement bei CanCanCan hat

War das denken würde funktionieren, aber keine Würfel.

Welchen Code muss ich in die Datei "affiliate.rb" einfügen, damit das funktioniert?

Hier ist ein Auszug aus meinem lessons_controller.rb

class LessonsController < ApplicationController 
before_action :set_lesson, only: [:show, :edit, :update, :destroy] 
before_filter :authenticate_user! 

def show 
@subscriptions = Subscription.all 
authorize! :read, @lesson 
end 

das Schema Abonnements wie folgt aussieht:

create_table "subscriptions", force: :cascade do |t| 
t.string "stripe_id" 
t.integer "plan_id" 
t.string "last_four" 
t.integer "coupon_id" 
t.string "card_type" 
t.float "current_price" 
t.integer "user_id" 
t.datetime "created_at", null: false 
t.datetime "updated_at", null: false 
end 

Das User-Schema:

create_table "users", force: :cascade do |t| 
t.string "email",     default: "", null: false 
t.string "encrypted_password",  default: "", null: false 
t.string "reset_password_token" 
t.datetime "reset_password_sent_at" 
t.datetime "remember_created_at" 
t.integer "sign_in_count",   default: 0, null: false 
t.datetime "current_sign_in_at" 
t.datetime "last_sign_in_at" 
t.string "current_sign_in_ip" 
t.string "last_sign_in_ip" 
t.datetime "created_at",       null: false 
t.datetime "updated_at",       null: false 
t.string "first_name" 
t.string "string" 
t.string "last_name" 
end 

Jede Hilfe wäre sehr dankbar! Vielen Dank!

Antwort

1

Haben Sie das herausgefunden, falls jemand es wissen möchte. Ich habe current_user in nur Benutzer geändert und den Benutzer || hinzugefügt = User.new

Hier ist der ability.rb Code:

def initialize(user) 
user ||= User.new 

if Subscription.exists?(:user_id => user.id) 
    can :read, Lesson 
else 
    false 
end 
end