# Conditional Sessions

**URL:** <https://www.ruby-forum.com/t/conditional-sessions/143627>\
**Category:** Rails\
**Created:** [July 21, 2008, 10:58am UTC](https://www.ruby-forum.com/t/conditional-sessions/143627 "2008-07-21T10:58:44Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![bud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bcef8e/32.png) [@bud](https://www.ruby-forum.com/u/bud)\
**Post date:** [July 21, 2008, 10:58am UTC](https://www.ruby-forum.com/t/conditional-sessions/143627/1 "2008-07-21T10:58:44Z")

</div>

## I am new to rails but have been able to cobble together a pretty decent storefront and taken it live. However, creating a lot of false sessions. Tried to implement a check for user\_agent. The problem is that when I issue a “session :off”, I’m receiving a “wrong number of arguments (1 for 0)”. Turning the session off under the application.rb works fine but as soon as I try to move it to an action within the controller it errors as in

def cookies\_required  
session :off

```
return unless request.cookies["_session_id"].to_s.blank?
session[:return_to] = request.request_uri
redirect_to(:controller => "store", :action => "cookies_test")
return false

```

## end

Any suggestions would be appreciated.

Bud

---

<div class="post-metadata">

**Author:** ![bud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bcef8e/32.png) [@bud](https://www.ruby-forum.com/u/bud)\
**Post date:** [July 21, 2008, 11:04am UTC](https://www.ruby-forum.com/t/conditional-sessions/143627/2 "2008-07-21T11:04:54Z")

</div>

On 21 Jul 2008, at 09:58, Bud Buckwell wrote:

> * * *
> 
> def cookies\_required  
> session :off
> 
> return unless request.cookies["\_session\_id"].to\_s.blank?  
> session[:return\_to] = request.request\_uri  
> redirect\_to(:controller =\> “store”, :action =\> “cookies\_test”)  
> return false  
> end

You can’t do thus like that. If you want sessions on or off on a per  
action basis you need something like

class SomeController \< ApplicationController  
session :off, :if =\> Proc.new {|request| … }  
end

with your proc evaluating to true or false as appropriate  
Fred

---

<div class="post-metadata">

**Author:** ![bud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bcef8e/32.png) [@bud](https://www.ruby-forum.com/u/bud)\
**Post date:** [July 23, 2008, 9:53am UTC](https://www.ruby-forum.com/t/conditional-sessions/143627/3 "2008-07-23T09:53:28Z")

</div>

Fred - thanks for the pointer - all better
