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 P. 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.

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)

2010/9/5 Pål Bergström [email protected]:

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

On Sep 5, 10:29 am, Pål Bergström [email protected] wrote:

Pål Bergström wrote:

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

@tests = Test.find(:all)

brute force:

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

Might be a more clever way to do it.

2010/9/4 Pål Bergström [email protected]:

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]

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

2010/9/6 Pål Bergström [email protected]:

Colin L. 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

Colin L. 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.