我正在使用Koudoku gem构建订阅网站,并尝试使用Cancancan阻止对我的课程内容的授权,直到注册用户订阅,但我在设置ability.rb文件时遇到问题。使用设计也是如此。我想保留课程:显示操作被阻止,直到用户购买订阅。我能够锁定课程,但无法提供语言为订阅者解锁。
认为这会起作用,但没有骰子。
@subscription.user_id == current_user.id
我需要将哪些代码插入ability.rb才能使其正常工作?
以下是我的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
订阅架构如下所示:
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
用户架构:
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
任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
只是想出来以防万一有人想知道。我将current_user更改为just user并添加了用户|| = User.new
这是ability.rb代码:
def initialize(user)
user ||= User.new
if Subscription.exists?(:user_id => user.id)
can :read, Lesson
else
false
end
end