(Ruby / Rails) неопределенный метод, когда я пытаюсь ссылаться на переменную - PullRequest
1 голос
/ 14 июля 2011

Итак, продолжая мое приключение с активным ресурсом и активной записью, я пытаюсь сделать простой метод get в активном ресурсе, но каждый раз, когда я пытаюсь ссылаться на переменную, он вызывает метод неопределенного исключения.Возможно, лучше объяснить это в коде.

class UserRequest < ActiveResource::Base
  self.site = "http://localhost:3008"


 def get_status 
    puts self.status
    return self.status
  end

Активная запись на другой стороне состоит из URL, глубины и статуса.

Так что я иду через консоль так, как и было бы,

?> @received = UserRequest.find(10)
=> #<UserRequest:0x101174e98 @prefix_options={}, @attributes={"user_request"=>#<UserRequest:0x10111ddc8 @prefix_options={}, @attributes={"created_at"=>Thu Jul 14 10:43:32 UTC 2011, "depth"=>583, "updated_at"=>Thu Jul 14 10:43:32 UTC 2011, "url"=>"www.mendi.com", "id"=>10, "status"=>"In queue: not started"}>}>
>> 
?> 
?> @received.get_status
NoMethodError: undefined method `status' for #<UserRequest:0x101174e98>
    from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.9/lib/active_resource/base.rb:1401:in `method_missing'
    from /Users/shanemoore/Desktop/activeResourceTest/webApps/app/models/user_request.rb:17:in `get_status'
    from (irb):47
>> 

кажется, что когда я ссылаюсь на часть .status activerecord, он ищет метод, а не переменную, которую я думалбыл возвращен на .find.Та же проблема возникает на серверной консоли.

2 Определенные возможности в том, что я ссылаюсь на переменные неправильно (хотя я пробовал несколько разных способов вызова этого, кроме self.whither)

Или моя концепция построения классов в активной записи неверна.(возможно, это самоинициализация, о которой я постоянно слышу)

Кто-нибудь хочет помочь?

1 Ответ

0 голосов
/ 15 июля 2011

Не понимаю цель метода get_status.Поскольку статус является атрибутом, вам не нужно определять этот метод, Rails сделает это за вас.Так что @received.status должно работать просто отлично.

...