Display tasks related to current_user in index action?
I followed RailsCasts validation from scratch (http://railscasts.com/episodes/250-authentication-from-scratch-revised) using a gem
and has an
best in place
in-app gem from another RailsCasts episode (http://railscasts.com / episodes / 302-in-place-editing).
I have user, session and task models. After the user logs into the application, the user's route will be
. Instead of displaying all tasks, I want to display only those tasks that are
My model associations look like this:
Subscription: has_many :users,
Tasks: belongs_to :user,
User: has_many :tasks and belongs_to :subscription
The users table contains email and password columns. The task table contains a column of content.
Simple authentication from scratch creates a helper method in the application.rb file that I'm having difficulty accessing the task controller with:
@current_user ||= User.find(session[:user_id]) if session[:user_id]
My Tasks # the controller index action looks like this.
@tasks = Task.order("position") @task = Task.new end`
My # index tasks look like this:
` <% @tasks.each do |task| %> <li id="task_<%= task.id %>"><%= best_in_place task, :content %> <%= link_to raw("×"), task, method: :delete, remote: true %> <span class="handle">—</span> </li> <% end %>`
<%= form_for(Task.new) do |f| %> <%= f.text_field :content, :placeholder => "Add a new task here" %> <% end %>
How can I restrict tasks to only those created by the current user?
source to share
Another way is to access the method created in the task model:
app/views/index.html.erb def index @tasks = current_user_tasks(current_user) end app/model/Task.rb def current_user_tasks(user) Task.where("tasks.user_id = ?", user.id).order('created_at asc').first end
Hope this fixes your problem!
source to share