0
我正在開發我的第一個Ruby on Rails CRUD類型應用程序之一。從Rails應用中的所有用戶索引中扣留當前用戶
這是一個像用戶帳戶(設計)和用戶上傳和擁有的圖片的Instagram應用程序。
我想創建一個用戶索引,一個發現其他用戶功能。我已經這樣做了,但輸出包括當前登錄的用戶。我希望從「發現其他用戶」下的用戶索引中省略當前用戶。
用戶控制器代碼與我嘗試過的代碼失敗註釋掉。
class UsersController < ApplicationController
\t def show
\t \t @user = User.find(params[:id])
\t end
\t def new
\t end
\t def index
\t \t @users = User.all
\t \t #@users = User.where("user_id != ?", current_user.id)
\t end
end
用戶查看代碼
<div class="booyah-box col-xs-6 col-xs-offset-3">
\t <% @users.each do |user| %>
\t <%= link_to public_profile_path(user) do %>
\t <%= image_tag user.avatar, :class => "smallPlate" %>
\t <% end %>
\t <% end %>
</div>
和錯誤
ActiveRecord::StatementInvalid in Users#index
Showing /vagrant/src/platewarz/app/views/users/index.html.erb where line #2 raised:
PG::UndefinedColumn: ERROR: column "user_id" does not exist
LINE 1: SELECT "users".* FROM "users" WHERE (user_id != 9)
^
: SELECT "users".* FROM "users" WHERE (user_id != 9)
Extracted source (around line #2):
1
2
3
4
5
<div class="booyah-box col-xs-6 col-xs-offset-3">
\t <% @users.each do |user| %>
\t <%= link_to public_profile_path(user) do %>
\t <%= image_tag user.avatar, :class => "smallPlate" %>
\t <% end %>
Rails.root: /vagrant/src/platewarz
Application Trace | Framework Trace | Full Trace
app/views/users/index.html.erb:2:in `_app_views_users_index_html_erb___484529272__626771048'
這個答案是正確的,我只是建議你檢查current_user是否存在。我沒有看到before_filter或任何可以保證current_user存在的東西。 – vereecjw
我想,如果我們按範圍定義它(檢查我的模型代碼),我們甚至不需要驗證current_user的存在。即使它是零,這個範圍將返回所有的用戶。 – Ajay
是的!那樣做了。所以我想這與版本有關? (我正在使用Rails 4.2.0)。我有點遺憾,因爲在相同的應用程序(發現照片)中使用了相似的場景:@Pics = Pic.where('id!=?',current_user.id),但是我的用戶場景沒有。但是,這兩種情況都適用於所建議的.where.not .....感謝您的幫助! –