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