Forum: Ruby on Rails undefined local variable or method `request'

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Fresh M. (Guest)
on 2008-12-22 20:27
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:in `setdot'
Franz S. (Guest)
on 2008-12-22 21:08
(Received via mailing list)
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:in `setdot'

Can you show the code for the setdot method?
Fresh M. (Guest)
on 2008-12-22 21:40
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
Fresh M. (Guest)
on 2008-12-22 21:42
Sorry,

user.user_ip = request.remote_ip
Robert W. (Guest)
on 2008-12-22 22:50
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.
This topic is locked and can not be replied to.