Tag: activeresource

rails路由:id无效

我有一个名为Schedule的模型属于一个项目。 一个项目有一个时间表。 我试图遵循CRUD惯例,但有一些困难。 我有一个列出所有项目的页面,并在每个项目旁边都有一个链接来创建计划。 我在路径文件中开始使用以下内容: resources :schedules 这是问题所在。 在“新计划”页面的url中,需要有一个:id,指的是计划所属的项目,当创建计划时,它将属于正确的项目。 我不知道如何用资源做到这一点,所以我将路由代码更改为: match ‘schedules/new/:id’, to: ‘schedules#new’, as: :new_schedule, via: [:get, :post] resources :schedules, except: [:new, :create] 出于某种原因,此页面为空白。 它只是白色的。 如何修复路线? 谢谢。 更新: 我也尝试将我的路线更改为以下内容: resources :projects do resources :schedules end 这使得新计划的URLforms为: /projects/:project_id/schedules/new(.:format) 我认为这是应该如何完成的,但是,新计划的表格是写成的 form_for @schedule 并产生以下错误: undefined method `schedules_path’ 有任何想法吗?

Rails:在创建类之前运行初始化程序

基本上我在RAILS_ROOT/config/initialiers/app_constant.rb上有一个initializer class ,使一切都易于控制。 class AppConstant APIURL = ‘http://path.to.api’ end 在RAILS_ROOT/model/user.rb ,我有以下设置: class User < ActiveResource::Base self.site = AppConstant::APIURL end 当运行rails s ,我收到以下错误 : uninitialized constant User::AppConstant::APIURL 我知道问题是因为Rails在创建Classes后运行Initializers。 有没有办法让一些初始化程序在Rails设置它之前运行? 最后,通过将require “#{Rails.root}\conf\initializers\app_constant.rb”到在Rails加载模型之前加载的application.rb来解决此问题。

使用ActiveResource将CamelCase xml / json转换为ruby命名属性

我正在使用ActiveResource来使用REST服务。 服务中的xml如下所示: Kevin Berridge ActiveResource解析这个很好,但它逐字地使用名称。 所以模型类看起来像: p = Person.find(1) p.FirstName p.LastName 我更喜欢这是否符合Ruby命名约定,如下所示: p = Person.find(1) p.first_name p.last_name ActiveResource有办法做到这一点吗? 有没有办法可以挂钩到ActiveResource并添加它?

如何创建与ActiveResource对象的ActiveRecord关系?

假设我正在为已经拥有People应用程序的出版公司编写一个Library应用程序。 所以在我的图书馆应用程序中我有 class Person < ActiveResource::Base self.site = "http://api.people.mypublisher.com/" end 现在我想为每个Person存储Article : class Article :author end 我想我的数据库中有以下表格: Articles id (PK) | title (string) | body (text) | author_id (integer) author_id不完全是外键,因为我没有People表。 这留下了几个问题: 如何告诉我的Person ActiveResource对象它has_many Articles ? Articles.find(:first).author工作吗? 鉴于没有ActiveRecord和没有支持表,will belongs_to会工作?

在不同的Rails应用程序之间共享ActiveRecord模型和数据的最佳方式?

我有几个rails应用程序将使用相同的核心模型和数据集,例如: 应用 开发商 分类 每个应用程序都建立在这个核心数据之上,并以不同的方式使用它。 例如,我可能在另一个应用程序中有这样的东西: 活动 用户 应用(共享) 开发人员(共享) 分类(共享) 在它们之间共享模型和数据的最佳方式是什么? 应用程序,开发人员和类别数据对于每个应用程序都是相同的,因此我不想在每个应用程序的数据库中复制数据。 编辑:我正在考虑几个可能的解决方案: Rails引擎(可以解决不同应用程序中的重复模型问题,但不会解决共享数据问题) 使用ActiveResource访问核心数据(解决共享数据,但不解决共享模型问题)

如何记录ActiveResource使用的URL?

Rails ActiveResource很棒……除了一件事:据我所知,没有办法看到它在幕后使用的是什么URL。 例如,假设我有一个名为Issue的ActiveResource,用于myIssues.com/issues.xml上的web服务。 如果我做: Issue.find(:all, :params => {:page => 2}) 我希望ActiveResource可以调用: myIssues.com/issues.xml?page=2 ……但我实际上并不知道。 据我所知,ActiveResource可能已经决定它不喜欢单词“page”,所以它实际上使用: myIssues.com/issues.xml?mod_page=2 这使调试变得困难。 现在我有一种情况,如果我转到我认为 ActiveResource正在使用的URL,它的工作正常。 但是,当我实际使用ActiveResource时,它不起作用。 看到它的GETing会对此非常有帮助,所以… 有没有人知道一种方法来记录(或以其他方式输出;如果有一些resource.url方法也可以很好地工作)ActiveResource用来做它的东西的URL?

从ActiveResource请求中删除.xml扩展名

我正在尝试使用ActiveResource来使用来自第三方API的xml数据。 我可以使用RESTClient应用程序成功进行身份validation和发出请求。 我编写了我的应用程序,当我提出请求时,我收到404错误。 我补充说: ActiveResource::Base.logger = Logger.new(STDERR) 到我的development.rb文件并找出问题所在。 API使用xml数据响应不以xml结尾的请求。 EG,这适用于RESTClient: https://api.example.com/contacts 但ActiveResource正在发送此请求 https://api.example.com/contacts.xml 无论如何,从ActiveResource生成的请求中删除扩展名是否“很好”? 谢谢

是否可以在每个用户的基础上设置Active Resource HTTP身份validation的线程安全?

Active Resource可以使用在类级别设置的HTTP身份validation。 例如: class Resource < ActiveResource::Base end Resource.user = 'user' Resource.password = 'password' 要么 Resource.site = “http://user:password@site.com/” 但是,如果我根据用户登录使用不同的HTTP身份validation怎么办? 如果我更改Resource.user和Resource.password,是否会导致竞争条件,其中来自一个线程的请求突然开始使用其请求在另一个线程中同时运行的用户的身份validation? 或者这是一个非问题(只要我重置请求之间的身份validation),因为rails服务器不是multithreading的? 即使没有线程安全问题,如果我无法重置它们仍然存在风险,以前用户的凭据将在未来的请求中自动使用。 更新:在对ActiveResource感到沮丧之后,我编写了自己的REST库: https : //github.com/DeepWebTechnologies/well_rested

设备和ActiveResource

我希望为少数项目提供1个数据库,其中只有一个与db直接连接,首先我要实现用户身份validation。 我应该在没有连接到数据库的情况下使用REST。 D您可以使用设计gem与活动资源一起工作。 谢谢。

Activeresource,更新和合并

我遇到了一个问题,我现在无法处理一个看起来像这样的ActiveResource对象: #1, “created_at”=>”2012-01-10T14:54:36Z”, “id”=>1, “settings_hash”=> # # [“none”, “none”]}, @persisted=false, @prefix_options={}>, “permissions”=> # [[“all”], [“all”] ]}, @persisted=false, @prefix_options={}>}, @persisted=false, @prefix_options={}>, “field_key”=>”BRp7Box33sg”, “fieldone”=>1, “updated_at”=>”2012-01-10T14:54:36Z”}, @persisted=true, @prefix_options={}> 我们来自ActiveRecord模型,其中字段被序列化为哈希。 我觉得好像我正在做很多工作来解压缩哈希并且我似乎无法添加它并更新模型。 我的意思是我可以添加它同时玩弄它但它需要类似的东西: thisobject.settings_hash[‘permissions’].attributes.merge({“derp”=>[[‘dsfasdf’],[‘asdfasdfadsf’]]}) 我很难回到对象,然后我想更新它来自哪里。 所以,我正在做一些我现在还不太了解的事情,也许是以一种尴尬的方式。 建议? 我想在ActiveResource对象中添加哈希到哈希字段以在其他地方更新ActiveRecord对象实例,但目前还不能。