Ruby on rails 带有find和where的show方法中的Rails 5自定义查询
我为这个笨拙的问题道歉。我有一个索引方法,它将对象限制为Ruby on rails 带有find和where的show方法中的Rails 5自定义查询,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我为这个笨拙的问题道歉。我有一个索引方法,它将对象限制为当前用户,效果很好,但我仍然可以在show方法中访问对象 这将仅显示当前用户对象 def index @todo_lists = TodoList.where(user_id: current_user) end 不幸的是,如果您知道id,仍然允许访问对象 def show @todo_list = TodoList.find(params[:id]) end 我试图做的事情,但给出了未定义的方法,其中错误 def show
当前用户
,效果很好,但我仍然可以在show方法中访问对象
这将仅显示当前用户对象
def index
@todo_lists = TodoList.where(user_id: current_user)
end
不幸的是,如果您知道id,仍然允许访问对象
def show
@todo_list = TodoList.find(params[:id])
end
我试图做的事情,但给出了未定义的方法,其中
错误
def show
@todo_list = TodoList.find(params[:id]).where(user_id: current_user)
end
您应该“替换”当前查询。As find返回单个对象,该对象对应于所请求的模型/表。where将在模型中使用,并返回ActiveRecord::Relation
的一个实例,这就是按id查找TodoList所需的内容
之后,您可以使用find,它将查找单个实体(一条记录),并将其作为模型实例返回
尝试:
请注意,如果当前_用户是user的一个实例,假设它有许多产品,您可以使用该关联获取所有产品,然后找到您需要的产品:
current_user.todo_lists.find(params[:id])
current_user.todo_lists.find(params[:id])