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.
Ead43bcb0202410540a6a7cee5955d46?d=identicon&s=25 Fresh Mix (giga)
on 2008-12-22 19: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'
9b8d00f99fe595bdc45fd30439cf9c8f?d=identicon&s=25 Franz Strebel (Guest)
on 2008-12-22 20:08
(Received via mailing list)
On Mon, Dec 22, 2008 at 7:27 PM, Gi Ga
<rails-mailing-list@andreas-s.net> 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?
Ead43bcb0202410540a6a7cee5955d46?d=identicon&s=25 Fresh Mix (giga)
on 2008-12-22 20:40
Franz Strebel 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
Ead43bcb0202410540a6a7cee5955d46?d=identicon&s=25 Fresh Mix (giga)
on 2008-12-22 20:42
Sorry,

user.user_ip = request.remote_ip
280b78a61a968391b7e07e912be102a8?d=identicon&s=25 Robert Walker (robert4723)
on 2008-12-22 21:50
Gi Ga wrote:
> Franz Strebel 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.