Pass a value from controller to model

I'm trying to pass a value from a cookie from the controller into model
by using attr_accessor. But it doesn't work and I suspect I do something
wrong.

Is this on the right path?

class Test < ActiveRecord::Base

  attr_accessor :key

.... key ..

end

class TestController < ApplicationController
def new
    @test = Test.new
    @test.key = cookies[:my_key]
  end
end

It should work. What makes you think it doesn't?

Fernando Perez wrote:

It should work. What makes you think it doesn't?

And it hasn't to be a column in the database (it isn't)?

My solution didn't work. But when you say that it should I know I'm on
the right track and that the problem is elsewhere. Thanks.

You could alternatively say
@my_key = cookies[:my_key]
then access @my_key in the view. If the key is logically an attribute
of Test then use your method, if you are just putting it there in
order to pass it to the view then it may be more logical to use a
separate variable.

Colin

Pål Bergström wrote:

I'm trying to pass a value from a cookie from the controller into model
by using attr_accessor. But it doesn't work and I suspect I do something
wrong.

Is this on the right path?

class Test < ActiveRecord::Base

  attr_accessor :key

.... key ..

end

class TestController < ApplicationController
def new
    @test = Test.new
    @test.key = cookies[:my_key]
  end
end

It works. But how do I deal with a list as this? How do I set the
variable?

@tests = Test.find(:all)

Is cookies[:my_key] just a single value? If so then do as I suggested
in my previous post
@my_key = cookies[:my_key]
and then it will be available in @my_key in the view.

I don't know what you are using the cookie for of course, but have you
considered using the session variable instead? That might be simpler
if it does what you need.

Colin

brute force:

@tests.each {|test| test.key = cookies[:my_key]}

Might be a more clever way to do it.

Colin Law wrote:

@my_key = cookies[:my_key]
then access @my_key in the view. If the key is logically an attribute
of Test then use your method, if you are just putting it there in
order to pass it to the view then it may be more logical to use a
separate variable.

Thanks but I don't need it in the view but in the model.

Note to self, must read original post more carefully.

Colin