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

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

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 активной записи, он ищет метод, а не переменную, которая, как я думал, была возвращена в .find. Та же проблема возникает на консоли на стороне сервера.

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

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

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


person OVERTONE    schedule 14.07.2011    source источник
comment
Если весь ваш метод get_status возвращает self.status, вы можете просто получить к нему доступ напрямую через @received.status. Нет необходимости определять отдельный метод получения   -  person Peter Andersen    schedule 14.07.2011
comment
Я не вижу атрибута status в вашей модели. Вы сделали rake db:migrate после того, как добавили его?   -  person user482594    schedule 15.07.2011
comment
На данный момент все, что делает метод get_status, это отвечает с помощью переменной, но после того, как я закончу, он отправит результаты в виде json через net::http   -  person OVERTONE    schedule 15.07.2011


Ответы (1)


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

person Sebastian Martinez    schedule 14.07.2011
comment
Я просто хочу сослаться на переменную на данный момент. Когда все будет готово, я хочу, чтобы он ответил почтовым запросом json. - person OVERTONE; 15.07.2011