ActiveRecord除了具有特定id的一个

时间:2014-04-27 08:52:34

标签: ruby-on-rails ruby-on-rails-3 postgresql ruby-on-rails-4

我有这个搜索查询:

  @ebm_entry = @patient.ebm_entries.find(params[:id])
  @ebm_entries = @patient.ebm_entries.where("created_at::date = ?", @ebm_entry.created_at.to_date)

@ebm.entry返回ID为40的条目 并@ebm.entries返回包含ids 4042

的条目

现在我尝试从@ebm.entry中删除@ebm.entries

我试过了:

@ebm.entries =

@patient.ebm_entries.where("create....).not(id: @ebm_entry.id)
@patient.ebm_entries.where("create....).except(@ebm_entry)

@patient.ebm_entries.where("created_at::date = ?", @ebm_entry.created_at.to_date  "&& id !=" @ebm_entry.id )

但不知怎的,我总是得到一个错误!我错了什么?谢谢!

2 个答案:

答案 0 :(得分:1)

你应该尝试这样

@patient.ebm_entries.where('id != ?', @ebm_entry.id).where("created_at::date = ?", @ebm_entry.created_at.to_date)

答案 1 :(得分:1)

Rails 4 中,您可以使用 where.not

@results = @patient.ebm_entries
#remove unwanted record
@results.where.not(id: @ebm_entry.id)
#more results filtering
@results.where("created_at::date = ?", @ebm_entry.created_at.to_date)