I'm sure this is a silly question with a straight-forward answer, but I can't seem to recall the answer or find it in the Devise docs.
I'm looking for a way to restrict a user from seeing attributes of a record they don't own. In my application, users
have_many :notes
and notes
belongs_to :user
.
Right now, a user can look at their own post (localhost:3000/notes/1
), but they can also view notes by any other user, simply by changing the url to something like localhost:3000/notes/2
. I want to prevent that and only allow them the ability to view their own (~/notes/1
in this example)
CodePudding user response:
In the controller action scope the query to the current user, something like
Note.all.where(user_id: current_user.id)
for index and chain with .find(id: params[:id])
for actions with single record.
CodePudding user response:
def show
@note = @current_user.notes.find_by(id: params[:id])
end