Get updated model values in Controller.

Hi All,

I have a model instance M1 , which has a dynamically changing instance
variable say V. I want to access the value of V in my view through
controller C using AJAX requests.

The problem is that for every new AJAX request a new controller
instance gets created. This new controller instance does not have any
reference to my already existing Model object M1 and therefore to the
variable V.

I have tried using session[:M1] but I get server error when I run the

Can I not keep the model object instances in session ?? Can anyone
point out if I am doing anything wrong, or maybe suggest an
alternative solution.


Hi Jean,

You are right, the problem however is that my model object M1 is not
serializable and hence cannot be dumped by the session. In fact I
don't want to store it even in a db since it's a non -AR model.

Here's my model code:
class Login

  def connect id, password
    @jid = id
    @password = password
    @cl = Jabber::Client::new(@jid)
    @cl.connect(host='', port=5223)
    @cl.auth_nonsasl(@password, false)
    @cl.add_message_callback do |m|
    if m.type != :error
      if m.body == 'exit'

        def assign_message msg_b, msg_f
         @mesage =Jabber::Message::new(msg_f,

        def throw
    return @mesage.body

Now this is basically a connection object which maintains my stream
connection to a server.

Here's the controller part.

class LoginController < ApplicationController

model :Login

def index

def sign_in

@jid = Jabber::JID::new(@params['user_name']+'/ruby')
@password = params['pwd']
#testing Login model creation
@log_in =
session[:sess]= @log_in

puts('signed in to oracle')

def throw_msg
  render_text "message received : #{session[:sess].throw}"


This controller gets created everytime I send an AJAX request calling
the throw_msg method in the controller to receive the new messages
coming in the model. But since the model object cannot be persisted it
doesn't know of the messages received.

Can you please suggest any alternative method.


If you have no way to serialize, or even better persist, the info into a
db, then I think you are stuck maybe having to look at a daemon process
that handles the messaging and you can query THAT in with your call to
the "throw_msg" method.

I am not really into threads and daemon processes. :(. What I am
wondering here is that unlike java where I can maintain session for
such objects why can i not do that on rails.

Or else, and I'm really just brainstorming here,

what about a class variable that is shared across all instances of your
controller and have that route your messages?

Not possible, there are two problems with that approach.

First the shared class variable will not be able to maintain more than
1 user session. ( Basically when say N users connect I need N
instances of my model object.)
Second the class variable will also get initialized every time the
controller class get instantiated because I create the model object
within the controller class.

Stuck badly.