我为这个笨拙的问题表示歉意。我有一个将对象限制为current_user
的索引方法,这很好用,但是我仍然可以在show方法中访问该对象。
这只会显示current_user对象
def index
@todo_lists = TodoList.where(user_id: current_user)
end
不幸的是,如果您知道ID,仍然允许访问该对象
def show
@todo_list = TodoList.find(params[:id])
end
我正在尝试做什么,但出现undefined method where
错误
def show
@todo_list = TodoList.find(params[:id]).where(user_id: current_user)
end
答案 0 :(得分:1)
您应“替代”当前查询。当find返回单个对象时,该对象对应于要查询的模型/表。虽然打算在模型中使用where并返回ActiveRecord::Relation
的实例,但这是您需要通过id查找TodoList的原因。
之后,您可以使用find,它将查找单个实体(一个记录)并将其作为模型的实例返回。
尝试:
TodoList.where('user_id = ?', current_user).find(params[:id])
请注意,如果current_user是User的一个实例,则假定它具有许多产品,则可以使用该关联来获取所有产品,然后找到所需的产品:
current_user.todo_lists.find(params[:id])