小编Jak*_*old的帖子

如何选择Array Rails ActiveRecord中的ID无一例外

当我有一些id,比如

ids = [2,3,5]
Run Code Online (Sandbox Code Playgroud)

我表演

Comment.find(ids)
Run Code Online (Sandbox Code Playgroud)

一切正常.但是当存在不存在的id时,我会得到一个例外.当我获得与某些过滤器匹配的ID列表时,通常会发生这种情况

current_user.comments.find(ids)
Run Code Online (Sandbox Code Playgroud)

这次我可能有一个有效的评论ID,但不属于给定的用户,所以找不到它,我得到一个例外.

我试过了find(:all, ids),但它返回了所有记录.

我现在能做到的唯一方法是

current_user.comments.select { |c| ids.include?(c.id) }
Run Code Online (Sandbox Code Playgroud)

但在我看来,这似乎是超低效的解决方案.

有没有更好的方法在Array中选择ID而不会在不存在的记录上获得异常?

activerecord ruby-on-rails find

127
推荐指数
4
解决办法
11万
查看次数

如何在MySQL中获取下一个/上一个记录?

假设我有ID 3,4,7,9的记录,我希望能够通过下一个/上一个链接导航从一个到另一个.问题是,我不知道如何获取最近的更高ID的记录.

因此,当我有一个ID为4的记录时,我需要能够获取下一个现有记录,这将是7.查询可能看起来像

SELECT * FROM foo WHERE id = 4 OFFSET 1
Run Code Online (Sandbox Code Playgroud)

如何在不获取整个结果集并手动迭代的情况下获取下一个/上一个记录?

我正在使用MySQL 5.

mysql sql

121
推荐指数
7
解决办法
19万
查看次数

如何在RSpec中说"should_receive"更多次

我的测试中有这个

Project.should_receive(:find).with(@project).and_return(@project)
Run Code Online (Sandbox Code Playgroud)

但是当对象接收到该方法调用两次时,我必须这样做

Project.should_receive(:find).with(@project).and_return(@project)
Project.should_receive(:find).with(@project).and_return(@project)
Run Code Online (Sandbox Code Playgroud)

有什么方法可以说出类似的话

Project.should_receive(:find).with(@project).and_return(@project).times(2)
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails

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

DTD中PCDATA与CDATA的区别

是什么区别#PCDATA,并#CDATADTD

xml dtd

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

如何在VIM中的大型项目中导航

如何仅使用VIM管理大型项目(数百个文件)?

我个人开始在任何大型项目中遇到问题.

  • 有没有办法快速'去档案',最好是名字completition?
  • 同样适用于'转到类定义',当它在另一个文件中时

我知道所有的VIM基础知识,所以我没有问题使用它来编写脚本或快速编辑一些源代码.但是当我必须在文件之间导航时,它变得非常混乱.

vim editor

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

方法调用如果在C#中不为null

有可能以某种方式缩短这种说法吗?

if (obj != null)
    obj.SomeMethod();
Run Code Online (Sandbox Code Playgroud)

因为我碰巧写了很多东西而且很烦人.我唯一能想到的就是实现Null Object模式,但这并不是我每次都能做到的,而且它肯定不是缩短语法的解决方案.

和事件类似的问题,在哪里

public event Func<string> MyEvent;
Run Code Online (Sandbox Code Playgroud)

然后调用

if (MyEvent != null)
    MyEvent.Invoke();
Run Code Online (Sandbox Code Playgroud)

c# null

82
推荐指数
5
解决办法
18万
查看次数

正则表达式,不包含某些字符串

我有类似的东西

aabbabcaabda

选择通过包裹最小组一个我有这个/a([^a]*)a/它工作得很好

但我有问题,由包组AA,在那里我需要像 /aa([^aa]*)aa/它不工作,我不能用第一个喜欢/aa([^a]*)aa/的,因为它会在中第一次出现的结束一个,我不想.

一般情况下,有没有什么办法,怎么说没有包含字符串以同样的方式,我可以说,不包含字符[^a]

简单地说,我需要aa后跟除序列aa之外的任何字符,然后以aa结尾

regex regex-negation

76
推荐指数
5
解决办法
18万
查看次数

如何跳过ActiveRecord回调?

可能重复:
如何避免运行ActiveRecord回调?

我有这样的模特

class Vote < ActiveRecord::Base  
    after_save :add_points_to_user

    .....
end
Run Code Online (Sandbox Code Playgroud)

是否有可能以某种方式迫使模型add_points_to_user在保存时跳过呼叫?可能像ActiveRecord#deletevs ActiveRecord#destroy

ruby-on-rails rails-activerecord

76
推荐指数
4
解决办法
8万
查看次数

更改存储库URL后,Capistrano部署失败

我通过Capitrano从Git存储库进行了简单的部署.起初我正在部署GitHub表单,一切正常.但后来我将我的存储库移动到BitBucket,现在我已经到了

fatal: Could not parse object '9cfb...'.
Run Code Online (Sandbox Code Playgroud)

一旦我改变,问题就消失了

set :deploy_via, :remote_cache
Run Code Online (Sandbox Code Playgroud)

set :deploy_via, :copy
Run Code Online (Sandbox Code Playgroud)

但这并没有解决问题,只能绕过它.有什么办法我可以告诉capistrano只丢弃旧缓存吗?

ruby deployment capistrano

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

在Ajax中获取GET与POST

是什么区别GETPOSTAjax的请求?

我没有看到这两者之间有任何区别,除了当我使用GET时,参数是在URL中发送的,这对我来说实际上没有任何区别,因为所有请求都是在后台进行的,用户没有找到任何区别.

编辑:PUTDELETE方法用于什么?

ajax semantics

73
推荐指数
3
解决办法
6万
查看次数