对于不需要太多控制器或选项的链接,使用ahtml标签会更好吗?link_to不必要地使用rails标签会对性能产生任何影响吗?
谢谢.
使用 MySQL(准确地说是 MariaDB)。我有以下脚本需要每隔一天运行一次来更新我的数据库,但它慢得令人无法忍受。要更新的每个表都需要运行数小时。这是一个shell脚本:
CMD_MYSQL="${MYSQL_DIR}mysql --local-infile=1 --default-character-set=utf8 --protocol=${MYSQL_PROTOCOL} --port=${MYSQL_PORT} --user=${MYSQL_USER} --pass=${MYSQL_PASS} --host=${MYSQL_HOST} --database=${MYSQL_DB}"
### Update MySQL Data ###
## table name are lowercase
tablename=`echo $FILE | tr "[[:upper:]]" "[[:lower:]]"`
echo "Uploading ($FILE) to ($MYSQL_DB.$tablename) with REPLACE option..."
## let's try with the REPLACE OPTION
$CMD_MYSQL --execute="LOAD DATA LOCAL INFILE '$FILE.txt' REPLACE INTO TABLE $tablename CHARACTER SET utf8 FIELDS TERMINATED BY '|' IGNORE 1 LINES;"
## we need to erase the records, NOT updated today
echo "erasing old records from …Run Code Online (Sandbox Code Playgroud) 想知道这些之间有什么区别:
indexes shop.created_at, :as =>created_at
has shop(:created_at), :as => :created_at
has shop.created_at, :as => :created_at
Run Code Online (Sandbox Code Playgroud)
谢谢.
Rails 4 和 delay_job 4.1.2。我试图在销毁评论后延迟重新计算总体评分,但显然是因为在销毁评论对象后,评论对象没有 ID。因此,每次尝试销毁对象后,它都会尝试创建延迟作业,但会引发此错误:
ArgumentError (job cannot be created for non-persisted record:
#<Review id: 44, review: "Bad", rating: 1, reviewable_id: 2,
reviewable_type: "Spot", user_id: 1, created_at: "2016-05-30 17:13:29",
updated_at: "2016-05-30 17:13:29">):
app/controllers/reviews_controller.rb:40:in `destroy'
Run Code Online (Sandbox Code Playgroud)
我有以下代码:
# reviews_controller.rb
class ReviewsController < ApplicationController
def destroy
review.destroy
flash[:success] = t("reviews.destroy.success")
end
end
# review.rb
class Review < ActiveRecord::Base
after_destroy :calculate_overall_rating
def calculate_overall_rating
if number_of_reviews > 0
reviewable.update_attribute(:overall_rating, overall_rating)
else
reviewable.update_attribute(:overall_rating, 0)
end
end
handle_asynchronously :calculate_overall_rating
end
Run Code Online (Sandbox Code Playgroud)
值得注意的是,calculate_overall_rating不需要Review对象。
如果我删除 …
我们知道paper_trail有权撤消变更.但有没有办法看到更改是什么,以便我们知道要撤消哪个版本?更好的是,我们可以并排比较这些变化.
谢谢!
我的rails应用程序总是达到我在Linode的VPS设置的磁盘I/O速率的阈值.它设置为3000(我从2000年开始),每隔一小时左右,我会得到一个通知,它达到4000-5000 +.
我可以使用哪些方法来最小化磁盘IO速率?我主要使用Sphinx(Thinking Sphinx插件)和纬度和经度距离搜索.
有哪些方法可以避免?
我正在使用Rails 2.3.11和MySQL.
谢谢.
有没有更好的方法来写这个?
if a == 'new' || a == 'create'
...
else
...
end
Run Code Online (Sandbox Code Playgroud)
而不是检查a两次,我想我可以将第一行与一行结合起来a.我正在寻找类似的东西:
if a == ['new' || 'create']
Run Code Online (Sandbox Code Playgroud) 当我使用gitk检查我的分支时,我发现了以下内容:

我创建pretty_url,切换到它,工作的东西,提交,然后切换到master分支(这是干净的),然后运行git merge pretty_url,并检查gitk,并找到了这个.
我确定这不合适,可能master不干净.我怎样才能解决这个问题?
使用Rails 3.2和Ruby 1.9.当我们的代码@objects.each_with_index do |object, i|,i通常与启动0,1,2.等等
假设我们有@objects = [A, B, C, D, E],输出是:
<% @objects.each_with_index do |object, i| %>
<%= i %> - <%= object %><br>
<% end %>
# output
0 - A
1 - B
2 - C
Run Code Online (Sandbox Code Playgroud)
我想要这样做:
# output
2 - A
1 - B
0 - C
Run Code Online (Sandbox Code Playgroud)
这该怎么做?
使用 Rails 3.2、Ruby 1.9、will_paginate。我有 100,000 条记录,并测试了以下查询:
# 1000+ms to load
@shops = Shop.where(:shop_type => @type).paginate(:include => :photos, :page => params[:page], :per_page => 25, :order => 'created_at DESC')
# 1000+ms to load
@shops = Shop.paginate(:include => :photos, :page => params[:page], :per_page => 25, :order => 'created_at DESC')
# 1000+ms to load
@shops = Shop.order('created_at DESC').limit(25)
# 1+ms to load
@shops = Shop.paginate(:include => :photos, :page => params[:page], :per_page => 25)
Run Code Online (Sandbox Code Playgroud)
我注意到这个order选项非常慢。测试结果表明这will_paginate不是问题。
order我应该如何更改它以便可以加快查询速度。
ruby ×3
activerecord ×1
delayed-job ×1
git ×1
gitk ×1
mariadb ×1
mysql ×1
pagination ×1
performance ×1
sql ×1
versioning ×1