这可能很简单,我忽略了它.我正在使用设计可锁定功能,我想创建一个管理员可以检查以解锁锁定用户的按钮.
Devise有一个名为unlock_access的模型方法!.我试图在用户的控制器方法中使用视图中的按钮来调用它.
浏览次数:
= link_to('unlock', user_unlock_path(user), method: :post, class: 'button-xs') unless user == current_user
Run Code Online (Sandbox Code Playgroud)
users_controller.rb:
def unlock
user = User.find(params[:id])
user.unlock_access!
end
Run Code Online (Sandbox Code Playgroud)
路线
resources :users do
post 'unlock'
end
Run Code Online (Sandbox Code Playgroud) 所以,我正在尝试使用宝石评论员.我只想弄清楚如何为用户和管理员提供索引视图.我想为管理员呈现所有结果,仅为用户呈现相关帖子.我在github上搜索和搜索,但我找不到任何运气.我必须在政策和控制器中加入什么?
原始代码
class PostsPolicy
attr_reader :current_user, :model
def initialize(current_user, model)
@current_user = current_user
@post = model
end
def index?
@current_user.admin?
end
end
Run Code Online (Sandbox Code Playgroud)
调节器
class PostsController < ApplicationController
before_filter :load_user
before_filter :authenticate_user!
after_action :verify_authorized
def index
@posts = Post.order('title').page(params[:page]).per(25)
authorize User
end
private
def load_user
@user = User.find_by_id(params[:user_id])
end
end
Run Code Online (Sandbox Code Playgroud)
第二次更新
class PostsPolicy
class Scope
attr_reader :user, :scope
def initialize(user, scope)
@user = user
@scope = scope
end
def resolve
if user.admin?
scope.all
else
scope.where(user: user)
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
调节器 …
我正在尝试使用Rails 4和Devise设置Active Job.我愿意接受任何教程,如果有的话(通过我的搜索找不到.)
我知道有一个Devise Async gem,但它不包括Active Job.也就是说,我发现这个宝石在开发中很新鲜,但我收到了一个uninitialized constant Devise::Async::Backend::Base (NameError)错误.(可能是我在实施它时很轻松).
欢迎任何建议.我希望我不必创建新的控制器方法.
ruby-on-rails devise ruby-on-rails-4 devise-async rails-activejob
我正在尝试使用FactoryGirl来创建项目列表,但我需要这些项目不按顺序排列.这就是我所拥有的,但我希望它是DRYer.
spec.rb
context "three out of order" do
before do
FactoryGirl.create(:thing, ordering: 3)
FactoryGirl.create(:thing, ordering: 1)
FactoryGirl.create(:thing, ordering: 2)
end
it "should sort the things in order" do
expect(Thing.all.map(&:ordering)).to eq([1, 2, 3])
end
end
Run Code Online (Sandbox Code Playgroud)
我知道您可以创建多个项目:
FactoryGirl.create_list(:thing, ordering: 3 )
Run Code Online (Sandbox Code Playgroud)
但我想创建项目,以便测试他们的订单,他们将按顺序创建所有项目,因为我在工厂中设置了序列.