我是 Rails 新手,目前正在開發一個約會應用程式作為投資組合專案。但是,在我的主頁上,我希望能夠根據current_user. 也就是說,如果登錄用戶是男性,他將只能查看異性,因為它是一個約會應用程式。
我正在使用 Devise gem 并包含一個名為gender. 拜托,有人應該幫助我如何做到這一點。
class UsersController < ApplicationController
def index
@user = current_user
@users = User.all
end
def show
@user = User.find(params[:id])
end
用戶表
create_table "users", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.text "short_bio"
t.string "gender"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "unconfirmed_email"
t.integer "like"
t.string "image_url"
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
用戶模型
class User < ApplicationRecord
has_one_attached :image
has_many_attached :pictures
has_many :messages
has_many :likes
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :validatable, :trackable
# validates :short_bio, presence: true, length: {maximum: 500}
validates :email, presence: true, uniqueness: { case_sensitive: false }, length: {minimum: 5, maximum: 50}
end
uj5u.com熱心網友回復:
您只能像這樣加載與當前用戶不同性別的用戶:
@users = User.where.not(gender: current_user.gender)
uj5u.com熱心網友回復:
可能您在模型中需要兩列。這只是想法的例子
您可以使用性別(它不是二進制)而不是性別
您當然可以使用其他資料型別
t.integer :sex
t.integer :look_for_sex
例如:
0 -- 女性,1 -- 男性
接著
User.where(sex: current_user.look_for_sex, look_for_sex: current_user.sex)
將僅回傳當前用戶想要約會的用戶
uj5u.com熱心網友回復:
謝謝大家的回復。我不必重構我的代碼,只需添加下面的代碼即可解決我的問題:
@users = current_user == 'Male' ? User.where(gender: 'Male') : User.where(gender: 'Female')
在這種情況下,如果當前用戶是“男性”,他將只能訪問“女性”,反之亦然。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/503811.html
下一篇:Rspec期望()與期望{}
