如何修复Rails中的未知密钥错误?

时间:2013-12-10 19:45:56

标签: ruby-on-rails

在我的控制器中我有:

    @like = Like.find(:product_id => params[:id].to_i, :user_id => current_user.id, :liked => "Yes")
    @like.destroy

Like表是:

class Like < ActiveRecord::Base
  attr_accessible :liked, :product_id, :user_id
end

然而,当我尝试运行此操作时,我收到一条错误消息,说明未知密钥:product_id。关于如何解决这个问题的任何建议?

2 个答案:

答案 0 :(得分:0)

试试这个:

@like = Like.where(:product_id => params[:id].to_i, :user_id => current_user.id, :liked => "Yes").first
@like.destroy if @like

您正在使用的查找方法将获取对象的ID。

答案 1 :(得分:0)

find需要主要ID,但find_by允许您指定其他值,因此您可以说:

find_by(:product_id => params[:id].to_i, :user_id => current_user.id, :liked => "Yes")

它返回一条符合条件的记录,相当于where(...).take,每http://guides.rubyonrails.org/active_record_querying.html