所以我有一个应用程序,我正在研究两个模型。用户可以创建具有特定特征的对象
我不希望用户能够找到自己的对象。
如何限制查询?
def self.search(search)
where(['primarybreed LIKE ?', "%#{search}%"]).where(:user_id != current_user.id)
end
当前用户违反上述代码。包括会话帮助程序也会破坏代码。
编辑: 控制器
@dog = Dog.search(params[:search],current_user.id).sample if params[:search].present?
查询:
def self.search(search, current_user_id)
where(['primarybreed LIKE and user_id != ?', "%#{search}%", current_user_id])
end
产生以下错误
wrong number of bind variables (2 for 1) in: primarybreed LIKE and user_id != ?
答案 0 :(得分:1)
对于Rails 4.x,请使用:
def self.search(search, current_user_id)
where(['primarybreed LIKE ?', "%#{search}%").where.not(user_id: current_user_id])
end
你可以称之为:
@dog = Dog.search(params[:search],current_user.id).sample if params[:search].present?
答案 1 :(得分:0)
可能会解决您的问题
def self.search(search, current_user_id)
where(['primarybreed LIKE and user_id != ?', "%#{search}%",current_user_id])
end
答案 2 :(得分:0)
问题在于语法:
def self.search(search, current_user_id)
where(['primarybreed LIKE and user_id != ?', "%#{search}%", current_user_id])
end
你通过了2个参数,但查询有1.缺少“?”。添加“?”在LIKE之后再次检查。
def self.search(search, current_user_id)
where(['primarybreed LIKE ? and user_id != ?', "%#{search}%", current_user_id])
end