2015-07-21 61 views
0

我得到的範圍驗證碼:查詢相同ACCOUNT_ID,相同的狀態,但不是CURRENT_USER SQL鋼軌

scope :all_except, ->(user) { where(status: ACTIVE, account_id: user).where.not(id: user) } 

這:

scope :all_except, ->(user) { where("status = ? AND account_id = ? AND NOT id = ?", ACTIVE, user, user) 

我只想顯示所有與工作狀態的用戶,相同的account_id和沒有當前用戶

但當前用戶總是出現在我的收藏

這是我的驗證碼:

= f.collection_select :send_to_id, User.all_except(current_user.account_id), :id, :first_and_last_name, { include_blank: 'Select' }, { class: 'form-control' } 

請幫忙!

回答

1

使用本作中查看呼叫範圍

scope :all_except, ->(user) { where("status = ? AND account_id = ? AND NOT id = ?", ACTIVE, user.account_id, user.id) 

= f.collection_select :send_to_id, User.all_except(current_user), :id, :first_and_last_name, { include_blank: 'Select' }, { class: 'form-control' } 
+0

未定義的方法'ID 'for 2:Fixnum – BartSabayton

+0

什麼是current_user。?它應該是用戶對象 – Athar

+0

如果你傳遞了id,那麼參數應該被命名爲'user_id'。更正了回答 –

1

這應該工作(我真的一分爲二的作用域):

scope :with_account, -> (user_id) { where(account_id: user_id) } 
scope :active, -> { where(status: ACTIVE) } 
scope :all_except, -> (user_id) { where.not(id: user_id) } 

User.active.with_account(current_user.account_id) 
    .all_except(current_user.account_id) 
+0

未定義方法'id'for 2:Fixnum – BartSabayton

+0

更正了答案 –

+0

沒有錯誤,但當前用戶出現在我的收藏中。 – BartSabayton

相關問題