我有一个问题表,在索引页面中,我只想显示当前用户的问题,所以我这样做:
Question.find_by_user_id current.id
但它只返回带有此ID的第一条记录。当我查看生成的sqlite代码时,我发现了这个
SELECT "questions".* FROM "questions" WHERE "questions"."user_id" = 2 LIMIT 1
因此我需要删除此限制或将其设为nil
答案 0 :(得分:0)
根据rails docs,find_by接受参数并将其传递给find_by方法。除非您将查询直接更改为where子句,否则没有其他方法可以更改提供的限制。
def find_by(*args)
where(*args).take
end
最终答案
Question.where(user_id: current.id)
答案 1 :(得分:0)
find_by
始终返回与给定条件匹配的单个记录。请勿使用find_all_by
或where
Question.find_all_by_user_id(current_user.id)
或强>
Question.where(user_id: current_user.id)
如果您使用的是Rails 4,那么我建议您使用where
。