Undefined local variable or method `request'


#1

I have a model users.rb

class Users < ActiveRecord::Base
def self.setdot(dot)
end
end

In controller I call it:

user = Users.new
user = Users.setdot(“sddf”)

I get error:

undefined local variable or method `request’

/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/base.rb:1833:in
method_missing' app/models/users.rb:5:insetdot’


#2

On Mon, Dec 22, 2008 at 7:27 PM, Gi Ga
removed_email_address@domain.invalid wrote:

/usr/local/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/base.rb:1833:in
method_missing' app/models/users.rb:5:insetdot’

Can you show the code for the setdot method?


#3

Franz S. wrote:

Can you show the code for the setdot method?

class Users < ActiveRecord::Base
def self.setdot(dot)
user = self.find_or_create_by_dot (dot)
if user.user_ip != request.remote_ip
user.user_ip = user.remote_ip
user.count = user.count + 1
user.save
end
end
end


#4

Gi Ga wrote:

Franz S. wrote:

Can you show the code for the setdot method?

class Users < ActiveRecord::Base
def self.setdot(dot)
user = self.find_or_create_by_dot (dot)
if user.user_ip != request.remote_ip
user.user_ip = user.remote_ip
user.count = user.count + 1
user.save
end
end
end

ActiveRecord::Base has no local variable nor method named request. This
is precisely what the error message says. Also self.setdot(dot) has no
local variable named request, but you are attempting to access a
variable or method named request in the line:

if user.user_ip != request.remote_ip

Things like the session and request/response objects are not available
to the model layer of MVC, as it should be. My suggestion would be to
get the “data” that you want from the request and pass that “data” along
to the model layer. The layer that is responsible to managing the data
of your application.

Hope this helps.


#5

Sorry,

user.user_ip = request.remote_ip