小编equ*_*nt8的帖子

当您执行 activeRecord.save 时,事务是提交还是方法退出时?

在 Rails 3 中,当您执行 activeRecord.save 时是事务提交还是方法退出时?

所以我想弄清楚的是 MySQL 是否是在保存后立即编写的!或者在我退出定义黑色后保存

def something
  1000.times do
       o = Order.new(:name => "Tomas")
       o.save
  end
end 
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

Rails 在 DB 级别舍入浮点数

我有一个带有浮动列的表(我正在使用 MySQL、mysql2 gem,一切都是标准的)

create_table :some_table do |t| 
  t.float  :amount 
end 
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我正在控制台上玩

a = SomeTable.new
a.amount = 9999.99
a.save!
#9999.99
a.amount
#9999.99
a.reload
a.amount
#9999.99
Run Code Online (Sandbox Code Playgroud)

一切还好

a = SomeTable.new
a.amount = 9999.999
a.save!
#9999.999
a.amount 
#9999.999
a.reload
a.amount
#10000.00
Run Code Online (Sandbox Code Playgroud)

正如您所看到的 ruby​​ (或rails)对数字进行四舍五入。

有人能解释一下这是为什么吗?……还是只有我一个人?

ruby mysql ruby-on-rails rounding

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

在添加rails link_to,mail_to之后,haml删除前面的空格

我正在用haml编写文本:

Blab bla for any questions contact us on me@foo.com.
Run Code Online (Sandbox Code Playgroud)

所以haml看起来像

%p
  Blab bla for any questions contact us on
  = mail_to 'me@foo.com'
  .   
Run Code Online (Sandbox Code Playgroud)

注意. 是ascii中的点,我也可以用= '.'(渲染字符串点)替换该行

但渲染的文字看起来像

Blab bla for any questions contact us on me@foo.com .
Run Code Online (Sandbox Code Playgroud)

区别在于最后点之前的空格

我想出的解决方案就是

%p
  Blab bla for any questions contact us on
  = mail_to('me@foo.com') + '.'
Run Code Online (Sandbox Code Playgroud)

这只是我正在寻找最佳实践:) thx

haml ruby-on-rails

5
推荐指数
3
解决办法
2443
查看次数

向多态表添加多个索引的最佳方法是什么

假设我有与此类似的多态

| document_id | owner_type | owner_id |
| 1           | Client     | 1        |
| 1           | Client     | 2        |
| 2           | User       | 1        |
Run Code Online (Sandbox Code Playgroud)

我知道我会调用查询来寻找owner_typeowner_type+owner_id

SELECT * FROM document_name_ownerships WHERE owner_type = 'Client`
SELECT * FROM document_name_ownerships WHERE owner_type = 'Client` and owner_id = 1
Run Code Online (Sandbox Code Playgroud)

让我们忽略如何索引document_id 我想知道在此 SQL 场景中索引所有者列的最佳方式(性能)是什么

解决方案1:

CREATE INDEX do_type_id_ix ON document_ownerships (owner_type, owner_id)
Run Code Online (Sandbox Code Playgroud)

这样我就只有一个适用于这两种情况的索引

解决方案2:

CREATE INDEX do_id_type_ix ON document_ownerships (owner_id, owner_type)
CREATE INDEX do_type_ix …
Run Code Online (Sandbox Code Playgroud)

mysql sql indexing

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

Prism.js不使用Rails 4 turbolinks

我发现当我使用Prism.js语法highliting与Turbolinks组合突出显示行为奇怪.

当我加载第一次突出显示语法的页面时,Prism.js不会被触发,也没有突出显示任何内容.重新加载同一页后,Prism将启动并高亮显示代码.除非我更改位置(转到root)并返回到它(在相同的场景之后),否则页面将在此之后保持突出显示

当我从清单文件中删除Turbolinks时(application.js)一切正常(当然Turbolinks没有做任何事情)

我不想用

= link_to "Foo", blogs_path(blog), "data-no-turbolink" => true 
Run Code Online (Sandbox Code Playgroud)

因为我必须在每一个链接上使用它(每个博客都会有一些代码高亮),因此根本没有任何关于turbolinks的观点

我试图使用Turbolings事件,page:change但我对纯JavaScript很糟糕(Prism.js是纯JS和我是jQuery junky)

所以任何人都知道如何告诉Turbolinks触发Prism.js语法高位?

javascript turbolinks ruby-on-rails-4 prism.js

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

json 1.8.2 gem给我致命错误stdio.h

尝试安装

gem install json -v '1.8.2'
Run Code Online (Sandbox Code Playgroud)

(..或bundle install 带有gem 'json', '1.8.2'in Gemfile

...在Ubuntu 14.04 VM上,我得到了:

Building native extensions.  This could take a while...
ERROR:  Error installing json:
    ERROR: Failed to build gem native extension.

    /home/deploy/.rbenv/versions/2.1.5/bin/ruby extconf.rb
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
In file included from /home/deploy/.rbenv/versions/2.1.5/include/ruby-2.1.0/ruby/ruby.h:29:0,
                 from /home/deploy/.rbenv/versions/2.1.5/include/ruby-2.1.0/ruby.h:33,
                 from ../fbuffer/fbuffer.h:5,
                 from generator.c:1:
/home/deploy/.rbenv/versions/2.1.5/include/ruby-2.1.0/ruby/defines.h:26:19: fatal error: stdio.h: No such file or directory
 #include <stdio.h>
                   ^
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails bundler

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

有没有办法告诉git忽略文件的某些行?

我正在尝试将我的.bashrc .gitconfig和其他有用的配置放到github上(因为我想分享一些有价值的代码片段),但问题是我不想分享某些"关于我的有价值的信息" ,

那么有没有办法告诉git忽略文件的某些模式或行(例如.gitignore?)

注意:我想知道如何进行我的bashrc共享(我将保留bashrc公共事物并将私有移动到我不会分享的bashprofile)但我有点想知道如何共享我的gitconfig(有一些非常好的别名)

谢谢

git gitignore

4
推荐指数
1
解决办法
3538
查看次数

什么是omniauth和电子邮件密码注册最佳实践?

结合Facebook登录(假设我将使用Omniauth gem)和电子邮件+密码登录的最佳做法是什么?

我看了几个博客,看过Railscasts,我知道每个人都在使用Devise gem和Omniauth.但我正在寻找一些不同的观点.

子问题:

我正在考虑从头开始创建电子邮件+密码注册(不使用任何宝石,让它保持快速和轻便)所以你有什么建议吗?或者,如果你有特定的宝石,请让它快速.

你对Oauth2宝石(替代Omniauth)处理Facebook的身份验证有什么其他建议吗?

对不起,我在这里问这个基本问题,但我没有找到很多答案(我发现大部分都是基于Devise)

ruby ruby-on-rails authlogic devise omniauth

4
推荐指数
1
解决办法
2289
查看次数

Rails Sidekiq Redis因brpop而长期运行

使用Sidekiq对新的Ruby on Rails应用程序进行Newrelic监视,还没有实现太多逻辑,也没有太多流量,这表明Redis在brpop操作上花费了很长时间(大约2s-3s)。

这是为什么?

在性能方面有问题吗?

ruby-on-rails newrelic sidekiq

4
推荐指数
1
解决办法
612
查看次数

Ruby和Ruby on Rails中的Memoization和缓存

Given application is looping through many fields Why is Application making multiple SQL calls even if I memoize the object

要么

Given application is looping through many items How to prevent application doing expensive calculation on every item

示例Rails代码

  • 工作有很多评论
  • 只有在没有评论或管理员用户时才能删除工作
  • 只有可以删除时,我们的视图界面才会显示"删除工作"

注意:我们使用http://www.eq8.eu/blogs/41-policy-objects-in-ruby-on-rails中描述的策略视图对象

class WorksController < ApplicationController
  def index
    @works = Work.all
  end
end

<% @works.each do |work| %>
   <%= link_to("Delete work", work, method: delete) if work.policy.able_to_delete?(current_user: current_user) %>
<% end %>

class Work < ActiveRecord::Base
  has_many :comments …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails

4
推荐指数
1
解决办法
1278
查看次数