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'
on 2008-12-22 20:27
on 2008-12-22 21:08
On Mon, Dec 22, 2008 at 7:27 PM, Gi Ga <email@example.com> 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?
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
on 2008-12-22 21:42
Sorry, user.user_ip = request.remote_ip
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.