2017-05-04 46 views
1

我不確定如何去編寫下面的方法,你的幫助將不勝感激。我所試圖做的是:編寫一個方法查詢以顯示特定的用戶列表 - Rails 5

  • 如果用戶表示他們是男性(category_gender_id = 1),他們正在尋找一個女(user.preference.category_matchseeking_id = 2)我想,然後用category_gender_id = 2
  • 顯示所有女性成員category_gender_id = 1 [雄性]
  • category_gender_id = 2 [雌]
  • category_matchseeking_id = 1 [雄性]
  • category_matchseeking_id = 2 [雌]
  • 問題:如果當前用戶是男性或反之,顯示用戶是女性,那麼能否正確地在視圖(users/index.html.erb)中正確顯示,我可以怎樣正確編寫方法preference_list? - 嘗試以下,但似乎並沒有工作

車型

user.rb 
    belongs_to :category_gender 
    has_one :preference 

    def self.preference_list 
    users = User.all 
    users.each do |user| 
     if user.preference.category_matchseeking.name == "Male" 
     #display users that are female 
     users.joins(:category_gender).where('category_genders.name' => "Female") 
     else user.preference.category_matchseeking.name == "Female" 
     #display users that are male 
     users.joins(:category_gender).where('category_genders.name' => "Male") 
     end 
    end 
    end 

-

Preference.rb 
belongs_to :user 
belongs_to :category_matchseeking 

-

CategoryGender.rb 
has_many :users 

-

CategoryMatchseeking.rb 
has_many :preferences 

查看[用戶/ index.html.erb]

<table> 
    <thead> 
     <tr> 
     <th>Firstname</th> 
     <th>Lastname</th> 
     <td>gender</td> 
     <th>email</th> 
     <th>stats</th> 
     </tr> 
    </thead> 
    <tbody> 
     <% @users.preference_list.each do |user| %> 
     <tr> 
      <td><%= link_to user.firstname, user %></td> 
      <td><%= link_to user.lastname, user %></td> 
      <td><%= user.category_gender.name%></td> 
      <td><%= user.email %></td> 
      <td>-</td> 
     </tr> 
     <% end %> 
    </tbody> 
    </table> 

回答

0

嘗試指定您的else語句elsif

if user.preference.category_matchseeking.name == "Male" 
    #display users that are female 
    users.joins(:category_gender).where('category_genders.name' => "Female") 
elsif user.preference.category_matchseeking.name == "Female" 
    #display users that are male 
    users.joins(:category_gender).where('category_genders.name' => "Male") 
end 

else user.preference.category_matchseeking.name == "Female"將被解釋一樣,如果是等於或不。

而且你self.preference_list可以作爲一個輔助方法你ApplicationHelper或模型助手之內:

def preference_list 
    users = User.all 
    ... 
end 

然後在視圖裏使用,就像<%= preference_list %>

此外我認爲你可以使用where聲明爲where('category_genders.name = Female'),而不是=>

0

我不知道我完全理解你的問題,但我相信你正在尋找這樣的事情。 假設你有一個CURRENT_USER方法來獲取當前用戶

def preference_list 
    @users = Users.where(category_gender_id: 
    current_user.category_matchseeking_id, category_matchseeking_id: 
    current_user.category_gender_id) 
end 

這種方法就可以找到所有正在尋找您gender_id的用戶,你正在尋找的gender_id。

相關問題