在我的控制器中我有:
@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。关于如何解决这个问题的任何建议?
答案 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