小编Tim*_*Tim的帖子

如何在Ruby中搜索数组?

说我有一个字符串数组

arr = ['sandra', 'sam', 'sabrina', 'scott', 'mark', 'melvin']
Run Code Online (Sandbox Code Playgroud)

我将如何像在Rails中的活动记录对象一样搜索此数组.例如,查询"sa"将返回['sandra', 'sam', 'sabrina'].

谢谢!

ruby arrays ruby-on-rails

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

使用正则表达式在Ruby中查找精确的模式匹配

我将如何使用正则表达式测试完全匹配.

"car".match(/[ca]+/) 返回true.

由于正则表达式模式不包含"r",我如何才能使上述语句返回false?包含"c"和"a"以外的任何字符的任何字符串都应返回false.

"acacaccc"应该返回true

"acacacxcc"应该返回false

ruby regex

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

我将如何分解并从Ruby on Rails中的哈希数组中提取数组?

例如:

[ (id=>1, email=>'tim@tim.com', name=>'tim'),
  (id=>2, email=>'joe@joe.com', name=>'joe'),
  (id=>3, email=>'dan@dan.com', name=>'dan') ]
Run Code Online (Sandbox Code Playgroud)

如何提取电子邮件列并将其放入自己的数组中?

ruby arrays hash ruby-on-rails

7
推荐指数
1
解决办法
2161
查看次数

如何使用Rails在PostgreSQL中处理GROUP BY?

我有一个Rails 3应用程序,保持高分.我在Heroku上托管它,它使用postgresql作为数据库.

我需要从分数表中提取最高分.该表有列scoreuser_id.它在mysql中使用以下代码:

Score.order('score DESC').group('user_id').limit(25)

这会对每个用户的最高分进行排名.

当我把应用程序放在Heroku上时,我得到以下psql错误 PGError: ERROR: column "scores.id" must appear in the GROUP BY clause or be used in an aggregate function

我已经读过,但没有找到明确的答案.重新创建上述查询以使用PostgreSQL的最佳方法是什么?

谢谢!

蒂姆

postgresql ruby-on-rails ruby-on-rails-3

6
推荐指数
1
解决办法
1338
查看次数

如何绕过Rails 3中的protect_from_forgery获取Facebook画布应用?

我有一个Rails 3 Facebook画布应用程序.当它加载时,它给我一个无效的真实性令牌错误,并显示signed_requestFacebook发送到我的应用程序的参数.有没有办法绕过来自facebook的signed_request的'protect_from_forgery'?

谢谢!

蒂姆

facebook ruby-on-rails csrf ruby-on-rails-3

6
推荐指数
1
解决办法
7636
查看次数

为我的Rails 3应用程序创建内部分析的最佳方法是什么?

我有一个Rails 3应用程序,我正在寻找创建内部分析.我需要跟踪的项目包括展示次数(和独特的展示次数),来自这些展示次数的点击次数以及来自这些点击次数的转化次数.这些都是特定于用户的,因此每个用户都可以查看他们收到的展示次数,点击次数和转化次数.

最好的方法是什么?我应该创建一个单独的rails应用程序并用像素调用它吗?或者我应该在同一个应用程序中包含所有分析代码?

此外,是否有任何分析平台已经可以自定义以满足我的需求?

谢谢!

蒂姆

analytics google-analytics ruby-on-rails ruby-on-rails-3

6
推荐指数
1
解决办法
2855
查看次数

Amazon S3 直接上传无法识别文件的内容类型

我设置了我的 Rails 应用程序,每个用户都可以上传头像。图像使用 HTTP Post 直接上传到 Amazon 的 S3。到目前为止,除了用户能够上传任何类型的文件之外,一切正常。

我正在使用camelpunch 的d2s3 插件的一个分支。以下是帮手:

  policy = Base64.encode64(
    "{'expiration': '#{expiration_date}',
      'conditions': [
        {'bucket': '#{bucket}'},
        ['starts-with', '$key', '#{key}'],
        {'acl': '#{acl}'},
        {'success_action_redirect': '#{redirect}'},
        ['starts-with', '$Content-Type', '#{content_type}'],
        ['content-length-range', #{min_filesize}, #{max_filesize}]
      ]
    }").gsub(/\n|\r/, '')

    signature = b64_hmac_sha1(D2S3::S3Config.secret_access_key, policy)
    out = ""
    out << %(
      <form action="https://#{bucket}.s3.amazonaws.com/" method="post" enctype="multipart/form-data" id="#{options[:form][:id]}" class="#{options[:form][:class]}">
      <div>
      <input type="hidden" name="key" value="#{key}/${filename}" />
      <input type="hidden" name="AWSAccessKeyId" value="#{access_key_id}" />
      <input type="hidden" name="acl" value="#{acl}" />
      <input type="hidden" name="success_action_redirect" value="#{redirect}" />
      <input type="hidden" name="policy" value="#{policy}" />
      <input …
Run Code Online (Sandbox Code Playgroud)

upload file-upload ruby-on-rails amazon-s3 amazon-web-services

5
推荐指数
1
解决办法
2475
查看次数

在RSpec 2中使用OR的平等

编写以下示例的正确方法是什么?球员的得分应该等于5或8.

it "should equal 5 or 8" do
  player.score.should == 5 or 8
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

蒂姆

ruby rspec rspec2

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

无法在Rails 3.0.1上使用Authlogic设置current_user

我在Rails 2.3.5上运行了官方的authlogic插件.我将我的应用程序转换为Rails 3.0.1,现在我遇到了一些问题.

我在我的gemfile中包含了以下authlogic gem gem 'authlogic', :git => 'git://github.com/odorcicd/authlogic.git', :branch => 'rails3'

用户登录时会保存会话.调用该用户会话时,返回的值为nil.UserSession.find returns a nil value所以我无法分配current_user.

sessions_controller.rb

  def create
   @user_session = UserSession.new(params[:user_session])
   if @user_session.save!
    flash[:notice] = 'Login successful'
    redirect_to root_url
   else
    render :action => 'new'
 end
  end
Run Code Online (Sandbox Code Playgroud)

application_controller.rb

 helper_method :current_user, :current_user_session

 private

  def current_user_session
    return @current_user_session if defined?(@current_user_session)
    @current_user_session = UserSession.find
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.record
  end
Run Code Online (Sandbox Code Playgroud)

当用户登录时,将返回闪存通知,'Login sucessful'但未设置current_user.我也尝试使用官方的authlogic插件,没有任何改变.我在这里错过了什么吗?

谢谢!

蒂姆

ruby-on-rails authlogic ruby-on-rails-3

2
推荐指数
1
解决办法
786
查看次数

帮助在Ruby on Rails中对记录进行排序

我有一个包含两列的分数表:user_idscore

user_id得分
1 200
1 120
1 230
2 300
2 345
3 100
3 40
4 350
4 500
......

Score.order('score DESC').limit(3)列出前3个分数.相反,我如何获得前3个分数,其中每个用户只获得列表中的一个位置(他们的最高分).

上表中的高分将是:

user_id:4得分:500
user_id:2得分:345
user_id:1得分:230

谢谢!

蒂姆

ruby sql ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
1921
查看次数

获取错误在Rails中使用memcached时无法修改冻结对象

我遇到了memcached的问题.

我在这里使用Gregg Pollack的例子http://railslab.newrelic.com/2009/02/19/episode-8-memcached

post.rb

def self.recent
    Rails.cache.fetch('recent_posts', :expires_in => 15.minutes) do
        self.order('id DESC').limit(15)
    end
end
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我调用它@posts = Post.recent并将其写入缓存.如果我重新加载页面,我会收到错误TypeError: can't modify frozen object.

我在控制台中尝试了同样的事情,我得到了同样的错误.第一次执行时@posts = Post.recent,密钥recent_posts被添加到缓存中.当我第二次执行相同的命令时,我得到了冻结的错误.

我正在使用Rails 3.0.1并在开发模式下工作.

我在这里做错了吗?

谢谢!

蒂姆

memcached caching ruby-on-rails ruby-on-rails-3

0
推荐指数
1
解决办法
2659
查看次数