Tag: before filter

before_filter方法中的隐藏实例变量

在私有方法中隐藏实例变量初始化是一个好习惯吗? 例如,我有一个用户控制器,其中包含一些操作: class UsersController < ApplicationController before_filter :get_user, only: [:show, :edit, :update, :destroy] before_filter :set_user, only: [:new, :create] def index @users = User.all end def show end def new end def edit end def create if @user.save redirect_to @user, notice: 'User was successfully created.' else render action: 'new' end end def update if @user.update_attributes(params[:user]) redirect_to […]

直接访问页面时忽略先前URL的URI(request.referer).path

我正在尝试在会话中保存以前的URL,我目前有这个代码: after_filter “save_my_previous_url”, only: [:renderForm, :renderQuote] def save_my_previous_url if URI(request.referer).path session[:my_previouse_url] = URI(request.referer).path else session[:my_previouse_url] = URI(request.referer).path end end 当你从一个页面,到一个表单,然后到感谢页面,它工作,但如果你直接直接访问一个表单而不是单击一个链接,我会收到此错误: bad argument (expected URI object or URI string) 所以我需要一些如果没有以前的url时忽略这一点。

使用Active Admin过滤前跳过

我正在使用设计和最近添加的活动管理员,它创建了一个单独的admin_users表来保持管理员。 当我尝试登录并浏览时,一切正常。 但是,我的应用程序控制器对一般用户有此: before_filter :authenticate_user!, :except => [:show, :index] 因此,当在活动管理界面内时,每当我尝试编辑或删除任何内容时,它都会要求我登录。我了解到可以在需要排除before_filter的控制器内部使用skip_before_filter,但是Active Admin控制器文件夹中没有控制器文件,或者我可以看到项目中的任何位置。 任何人都可以建议如何使活动管理员忽略应用程序beofre_filter我想应用于所有面向客户端/用户?

如何在不执行“before_save”的情况下“update_attributes”?

我的Message模型中的before_save定义如下: class Message < ActiveRecord::Base before_save lambda { foo(publisher); bar } end 当我做: my_message.update_attributes(:created_at => …) foo和bar被执行。 有时,我想更新消息的字段而不执行foo和bar 。 如何在不执行foo和bar情况下更新created_at字段(在数据库中)?

在没有rails的ruby中实现rails before_filter

我在所有课程中使用ga logger。 我希望每个msg都以类名和方法名开头,如下所示: Class_name::Method_name 这就是我现在正在做的事情: class FOO def initialize end def bar msg_prefix = “#{self.class}::#{__method__}” … some code … @logeer = “#{msg_prefix} msg …” end def bar2 msg_prefix = “#{self.class}::#{__method__}” … some code 2 … @logeer = “#{msg_prefix} msg2 …” end end 我想使用像rails中的before_filter来防止两面性,我使用sinatra但是这些类是普通的老ruby 1.9.3类 想法?