Как использовать ActiveResource в приложении Rails - PullRequest
1 голос
/ 05 августа 2011

У меня есть приложение Rails (Redmine), и я создал следующий рабочий код, который закрывает проблему:

require 'active_resource'

class Issue < ActiveResource::Base
  self.site = "https://user@secret@esupport.some.com"
end

issue = Issue.find(7415)
issue.status_id = 5
issue.save

Теперь я хочу поместить этот код в плагин Rails.Но если я добавляю различия классов в Rails-плагины, я получаю следующее сообщение об ошибке:

TypeError (несоответствие суперкласса для класса Issue):

Я знаю причинуошибка - в приложении Rails есть проблема с моделью, но я не знаю, как ее исправить.

Если я изменю различие классов на

class **OtherIssue** < ActiveResource::Base
  self.site = "https://user@secret@esupport.some.com"
end

, ActiveResource не знаеткак связать мой класс с моделью Rails.

1 Ответ

2 голосов
/ 05 августа 2011

Легко забыть, что вы работаете с xml при использовании ActiveResource. Если бы у вас было

class SomeOtherIssue < ActiveResource::Base
  self.site = "https://support.some.com"
  self.element_name = "site"
  self.user = "someone"
  self.password = "secret"
end

some_other_issue = SomeOtherIssue.find(7415)
some_other_issue.status_id = 5
some_other_issue.save

Тогда вы бы сохранили данные на веб-сайте.Если вы хотите сохранить данные модели проблемы локально, вам нужно будет найти локальную запись проблемы и присвоить ей значения some_other_issue

Обновить в ответ на комментарий

Используйте self.element_name = некоторый путь на удаленном сайте, например,

self.element_name = 'my_model' перейдет к

https://support.some.com/some_model

, поэтому при вызове some_other_issue = SomeOtherIssue.find(7415) вы перейдете к действию шоуконтроллер my_model и передача 7415 в качестве параметра id.Поскольку ваш удаленный сайт будет использовать маршрут RESTfull (я надеюсь), вы получите ответ xml вместо ответа html в действии my_model / show.

в вашем случае вы должны установить self.element_name = "issue".Надеюсь, это будет понятнее.

http://api.rubyonrails.org/classes/ActiveResource/Base.html даст вам примеры этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...