我们如何编写以下语句以提高可读性?
Promotion.joins(:category).where(["lft>=? and rgt<=?", c.lft, c.rgt]).joins(:shops).where(:promotions_per_shops => { :shop_id => shops_id }).count('id', :distinct => true)
Run Code Online (Sandbox Code Playgroud)
以下内容无法编译
Promotion.joins(:category)
.where(["lft>=? and rgt<=?", c.lft, c.rgt])
.joins(:shops)
.where(:promotions_per_shops => { :shop_id => shops_id })
.count('id', :distinct => true)
syntax error, unexpected '.', expecting kEND
.where(["lft>=? and rgt<=?", c.lft, c.rgt])
Run Code Online (Sandbox Code Playgroud) 我试图让RubyTest在Sublime Text 2中工作.我遵循Github自述文件中的指令并得到以下错误.有谁知道我怎么解决这个问题?
/bin/sh: rspec: command not found
Run Code Online (Sandbox Code Playgroud) 以下是最简洁的等效Coffeescript:
# ruby
3.times { puts 'hi' }
Run Code Online (Sandbox Code Playgroud)
?
我能想到的最好的是:
# coffeescript
for n in [1..3]
console.log 'hi'
Run Code Online (Sandbox Code Playgroud) 我创建了一个使用随时随地宝石的应用程序.宝石创造了cron工作.我让它在本地工作,但似乎无法让它在heroku雪松上工作.执行此操作的命令是什么?
运行:
heroku run whenever --update-crontab job1
Run Code Online (Sandbox Code Playgroud)
不起作用
我想用Jekyll创建一个网站.不是博客.有没有办法避免在网址和网页文件名中指定创建日期?
我认为Jekyll背后的想法非常棒,但它似乎与博客生成内容有关,而在更一般的用例中也可能有用.
@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
@numbers.last 会给我8
我需要抓住最后两个记录.到目前为止,我已经尝试了这个,但它抛出了NoMethodError:
@numbers.last - 1
我正在Ruby on Rails上将文件上传到服务器
通常,它是一个文本文件,我将其作为提交ActiveRecord中的"文件"字段保存在模型中,其他字段包括提交标题等.
但是,用户也可以提交zip文件.在这种情况下,zip文件应该解压缩,并且对于zip中的每个文件,应该使用相同的文本字段创建新的Submission,但是当前文件.
我怎么能做到这一点?
我查看了网络上的解压缩示例,但大多数都使用目录来解压缩文件.我不确定我是否需要它,因为在当前的SubmissionsController创建方法中,接收到一个文件对象,并且我假定在调用Submission save方法时自动生成保存文件的路径.所以我想也许我应该将zip文件解压缩到内存中以获取文件对象数组,然后使用每个文件对象创建一个新的Submission但是相同的字段然后让ActiveRecord在将它们保存到文件时为每个文件生成文件路径.数据库.我可能在这里错了,因为我对Rails和Ruby有点新意.
我刚刚从rvm切换到rbenv,我正在尝试使用bundler进行gem管理.运行bundle install并尝试运行一个简单的sinatra应用程序(ruby app.rb),我得到这个:
Could not find haml-3.1.4 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)
bundle install再次跑步没有效果.还尝试bundle update了另一个问题回复的建议.
这是我的Gemfile:
source "http://rubygems.org"
gem "sinatra"
gem "haml"
Run Code Online (Sandbox Code Playgroud)
这就是bundle show产生的
* bundler (1.0.22)
* haml (3.1.4)
* rack (1.4.1)
* rack-protection (1.2.0)
* sinatra (1.3.2)
* tilt (1.3.3)
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序所需要的:
require "rubygems"
require "bundler/setup"
require 'sinatra'
Run Code Online (Sandbox Code Playgroud)
我敢说这是一种路径问题,其中bundler和rbenv没有一起玩.我试过通过rbenv的文档查看,但无法找到任何东西.
注意:在另一个sinatra应用程序中,我尝试运行它时会得到以下内容:
Could not find addressable-2.2.7 in any of the sources
Run `bundle …Run Code Online (Sandbox Code Playgroud) 给出以下数组a:
a = [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
我该怎么办:
a.map { |num| num + 1 }
Run Code Online (Sandbox Code Playgroud)
使用简短表示法:
a.map(&:+ 1)
Run Code Online (Sandbox Code Playgroud)
要么:
a.map(&:+ 2)
Run Code Online (Sandbox Code Playgroud)
其中1和2是参数?
有没有办法一次插入多个记录而不是一个?
我有一个非常非常丑陋的rake任务,正在执行以下操作......
VoteRecord.create(:prospect_id => prospect.id, :state => "OH", :election_type => "PR", :election => "2000-03-07", :party => row[45], :participate => participated(row[45]))
VoteRecord.create(:prospect_id => prospect.id, :state => "OH", :election_type => "GE", :election => "2000-11-07", :party => row[46], :participate => participated(row[46]))
VoteRecord.create(:prospect_id => prospect.id, :state => "OH", :election_type => "SP", :election => "2000-05-08", :party => row[47], :participate => participated(row[47]))
VoteRecord.create(:prospect_id => prospect.id, :state => "OH", :election_type => "GE", :election => "2001-11-06", :party => row[48], :participate => participated(row[48]))
VoteRecord.create(:prospect_id => prospect.id, :state => "OH", …Run Code Online (Sandbox Code Playgroud)