Hi all! I have some models that need a where condition for every select I do. Say I have this table: create_table "posts", :force => true do |t| t.string "title", :default => "", :null => false t.text "text", :default => "", :null => false t.datetime "created_at" t.integer "user_id", :default => 1, :null => false end So I want every user to see only his posts. Always. If I do Post.find() I want to add :conditions => [''user_id = ?'', session[:user_id]] for every call to find. I call find in a lot of actions, like find(params[:id]) or find_by_title(''hello'') and other variants of find. So my questions: can i add my condition to every call to find by adding it only one time somewhere? Thanks! -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
S2 Akira wrote:> So I want every user to see only his posts. Always. > If I do Post.find() I want to add :conditions => [''user_id = ?'', > session[:user_id]] for every call to find. I call find in a lot of > actions, like find(params[:id]) or find_by_title(''hello'') and other > variants of find. > So my questions: can i add my condition to every call to find by adding > it only one time somewhere?You can scope your find on your user. I assume that you are extracting your user, probably with something like: @current_user = User.find session[:user_id] If so, then replace all your Post finds which restrict to the user with a find on @current_user.posts, such as: @user_posts = @current_user.posts All #find calls on the Post class can be applied to the @current_user.posts association proxy, so to get the last 5 posts for this user: @last_5_posts = @current_user.posts.find :order => ''created_at'', :limit 5 -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---