I am a newbie in Rails and I am just trying to learn. I have this list
that lists all records from a table:
@pass = Pass.find :all
Now, I want to list only the records that belongs to the specific user
that is logged on.
The table passes contain a column named 'userid', which is
automatically entered when the user post a message in the passes
table.
I am a newbie in Rails and I am just trying to learn. I have this list
that lists all records from a table:
@pass = Pass.find :all
Now, I want to list only the records that belongs to the specific user
that is logged on.
The table passes contain a column named 'userid', which is
automatically entered when the user post a message in the passes
table.
I try with:
@pass = Pass.find_all_by_userid(params[userid])
This could just be a typo in your email, but that should be
you'll see this hash with indifferent access a lot. Once in a while,
you have to use the symbol or string form of the key (tho i can't
remember any specific cases right now)
I tested with the suggestion from Fred, but that did not help. The
list is still empty.
It works fine to hard-code the userid, but then the same records are
being shown every time.
This is what my controller looks like right now, and it produces a
blank list:
class PassController < ApplicationController
before_filter :login_required
def index
@pass = Pass.find(:all, :conditions =>
["userid=?",params[:userid]])
end
def new
@pass=Pass.new(params[:pass])
@pass.userid = @current_user
if request.post? and @pass.save
flash[:notice] = 'Träningspasset sparades'
redirect_to :action => 'index'
end
end
end
I would like to use the dynamic find_by if it is possible.
Processing PassController#index (for 127.0.0.1 at 2007-11-19 21:02:10)
[GET]
Session ID: a39749a398f7c8f8d544bc9c324369e0
Parameters: {"action"=>"index", "controller"=>"pass"}
e[4;36;1mSQL (0.000000)e[0m e[0;1mSET NAMES 'UTF8'e[0m
e[4;35;1mUser Columns (0.001000)e[0m e[0mSHOW FIELDS FROM
userse[0m
e[4;36;1mUser Load (0.001000)e[0m e[0;1mSELECT * FROM users WHERE
(users.`id` = 1) LIMIT 1e[0m
e[4;35;1mPass Columns (0.001000)e[0m e[0mSHOW FIELDS FROM
passese[0m
e[4;36;1mPass Load (0.001000)e[0m e[0;1mSELECT * FROM passes WHERE
(passes.`user_id` IS NULL) e[0m
Rendering within layouts/application
Rendering pass/index
Completed in 0.09800 (10 reqs/sec) | Rendering: 0.00400 (4%) | DB:
0.00400 (4%) | 200 OK [http://localhost/pass\]
A small explanation on the application.
It is a training dairy, where players write down their training
sessions (passes). When they list the passes, I want the list to only
show their own passes and not other players training passes. So the
table 'passes' have a column called user_id, which is automatically
entered whenever the user saves a new training session. The table
'users' have of course the _id column.
Thorsten, your suggestion about using @current_user is interesting,
and I would like to pursue that. However I am just a beginner and do
not fully understand what you meant. Can you explain some more ?