小编Pet*_*own的帖子

Ruby:根据块查找条件删除并返回一个数组值

是否有内置方法从数组中删除值,基于块条件返回true,并返回已删除的值?

这是我正在尝试做的简化版本,但似乎必须有更好的方法:

array = [1,2,3,4,5,6,7,8,9,10]

index = array.index {|v| v == 5} # returns index if block is true

value = array.delete_at(index) # deletes and returns element at index
Run Code Online (Sandbox Code Playgroud)

value 那么是5

ruby arrays ruby-on-rails

20
推荐指数
2
解决办法
2万
查看次数

Rails 3作用域发现给出了ActiveRecord :: ReadOnlyRecord

我正在将Rails应用程序从2.3.10升级到3.0.4,并且在我的控制器中更新模型时遇到了问题.我一直在"查找"模型查找,以防止用户更新不属于它们的对象.它在2.3中按预期工作,但我在Rails 3中使用update_attributes得到一个ActiveRecord :: ReadOnlyRecord错误.

在Rails 3中执行此操作的正确方法是什么?

项目管理员:

def update
  @project = current_user.projects.find(params[:id])

  if @project.update_attributes(params[:project])
    # saved
  else
    # not saved
  end
end
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails ruby-on-rails-3

17
推荐指数
1
解决办法
7590
查看次数

部署到Heroku时出错,无法运行重新打包

在编译资产并启动应用程序后部署到Heroku时出现错误:

-----> Compiled slug size: 172.8MB
-----> Launching... done, v274
-----> Deploy hooks scheduled, check output in your logs
       http://mysite.com deployed to Heroku

Auto packing the repository for optimum performance.
error: Could not read ddb3b2358b3ea331cea15b03a8657f929364ec8c
fatal: Failed to traverse parents of commit c30cd906cd578d9618a4605cefa6e55ac535b42e
error: failed to run repack
Run Code Online (Sandbox Code Playgroud)

部署似乎正在完成,并且部署了最新的Ruby代码,但我的最新JS更改未得到服务.对可能发生的事情的任何想法?

ruby-on-rails heroku asset-pipeline

17
推荐指数
1
解决办法
1333
查看次数

mongoid更新所有条件的文件

我有一个模特

class Employee
  include Mongoid::Document
  field :first_name
  field :last_name
  field :address1
  field :address2
  field :salary
end
Run Code Online (Sandbox Code Playgroud)

现在我需要将所有员工的工资更新为10000,其地址1是"卡尔加里"

现在我尝试了这个查询

Employee.update_all "salary = 10000", "address1 = 'Calgary'"
Run Code Online (Sandbox Code Playgroud)

但是这个查询给了我错误:

NoMethodError: undefined method `update_all' for Employee:Class
Run Code Online (Sandbox Code Playgroud)

谢谢

ruby document mongoid

15
推荐指数
1
解决办法
1万
查看次数

如何摆脱Spring警告:运行`gem pristine --all`?

我正在使用Spring应用程序预加载器,只是升级到v 0.9.0.现在我收到以下警告:

警告:运行gem pristine --all以重新生成已安装的gemspecs将提高Spring的启动性能.

我尝试运行该命令,但它无法安装我的一些宝石,这可能与我最近升级到OS X Mavericks有关.我如何摆脱这个警告?

ruby ruby-on-rails

15
推荐指数
2
解决办法
3757
查看次数

从控制器请求对象中获取Authorization标头的正确方法是什么?

我有两个RSpec测试,一个控制器规范和一个请求规范,我正在向同一个控制器的索引操作发出GET请求.在这两个规范中,我发送一个包含Oauth2承载令牌的Authorization标头.

我遇到的问题是,根据规范的类型,标头存储在请求对象的不同属性上.对于请求规范,它request.env["Authorization"]在控制器规范的情况下是可用的,它可以在request.session["Authorization"].

为什么"授权"存储在不同类型的规格的不同位置?有什么地方我可以找到两个规格吗?

这个bearer_token方法在父控制器类中,我从头部抓取令牌:

与env请求规范一起使用:

def bearer_token
  pattern = /^Bearer /
  header  = request.env["Authorization"] # <= env
  header.gsub(pattern, '') if header && header.match(pattern)
end
Run Code Online (Sandbox Code Playgroud)

与session控制器规格一起使用:

def bearer_token
  pattern = /^Bearer /
  header  = request.session["Authorization"] # <= session
  header.gsub(pattern, '') if header && header.match(pattern)
end
Run Code Online (Sandbox Code Playgroud)

这是我的要求规范:

describe '' do
  let(:user) { Fabricate(:user) }

  describe 'accessing content with valid token' do
    let(:token) { OauthToken.create(user: user) }
    let(:auth_headers) { {
      'Authorization' => "Bearer …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails ruby-on-rails-3

15
推荐指数
2
解决办法
6452
查看次数

从PHP中的openLDAP获取所有可能的属性和所有objectClasses

我必须用PHP编写LDAP编辑器.LDAP用于商店网络设备(交换机,AP,..).所以,这不是正常的功能,我发现很多问题.最大的问题是:

是否可以从数据库中读取所有objectClasses以及给定objectClass的所有属性?

谢谢你的回复!! 阿贾克斯

php attributes ldap

13
推荐指数
1
解决办法
3万
查看次数

Ruby:对象/类的数组

我不是红宝石专家,这给了我麻烦.但是我将如何在ruby中创建一个对象/类数组呢?如何初始化/声明它?在此先感谢您的帮助.

这是我的类,我想创建一个数组:

class DVD
  attr_accessor :title, :category, :runTime, :year, :price

  def initialize()
    @title = title
    @category = category
    @runTime = runTime
    @year = year
    @price = price
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby arrays object

12
推荐指数
3
解决办法
4万
查看次数

为RSpec和Rails-API设置Content-Type标头

我正在使用rails-api gem来构建Web服务,并希望使用RSpec测试我的API.无论HTTP方法如何,我发出的每个请求都将CONTENT_TYPE标头设置为"application/x-www-form-urlencoded".在我尝试在我的控制器中使用wrap_parameters并且它对params哈希没有任何影响之前,这不是一个真正的问题:

class ApplicationController < ActionController::API
  include ActionController::ParamsWrapper
end

class ProjectsController < ApplicationController
  wrap_parameters :project, include: [:name]
  # ...
end
Run Code Online (Sandbox Code Playgroud)

这个hack不再有效(@request是nil),而且我发现的其他Stack Overflow帖子都没有.

如果我在RSpec测试中提出以下请求:

put "/projects/1.json", {name: 'Updated Project 1'}
Run Code Online (Sandbox Code Playgroud)

并在我的控制器中放置一个调试器:

(rdb:1) p params
    { "name"=>"Updated Project 1",
  "action"=>"update",
  "controller"=>"projects",
  "id"=>"5539bbd9-010c-4cfb-88d3-82dadbc99507",
  "format"=>"json"
}

(rdb:1) p request.content_type
"application/x-www-form-urlencoded"
Run Code Online (Sandbox Code Playgroud)

我希望看到类似于params hash的东西(注意添加项目键):

{ "name"=>"Updated Project 1",
  "action"=>"update",
  "controller"=>"projects",
  "id"=>"5539bbd9-010c-4cfb-88d3-82dadbc99507",
  "format"=>"json",
  "project" => {"name" => "Updated Project 1"}
}
Run Code Online (Sandbox Code Playgroud)

是否可以仅使用RSpec设置内容类型标题?或者我是否必须使用机架/测试来实现此功能?

rspec ruby-on-rails ruby-on-rails-3.2 rails-api

11
推荐指数
3
解决办法
7743
查看次数

Rails中的会话4

如果不推荐使用ActiveRecord :: Store,那么维护会话的建议方法是什么?加密cookie存储新标准吗?如果你想保持> 4kb的状态怎么办?

session ruby-on-rails ruby-on-rails-4 rails-activerecord

11
推荐指数
2
解决办法
6448
查看次数