我有一個使用設計的用戶模型和配置文件模型。限制用戶只使用Rails中的Devise創建一個配置文件
用戶HAS_ONE輪廓 輪廓belongs_to的用戶
如何可以拋出一個錯誤,如果已經有一個配置文件關聯到他們時,他們試圖創建另一個配置文件的用戶。
所以,如果一個用戶進入example.com/profiles/new它會拋出錯誤
我有一個使用設計的用戶模型和配置文件模型。限制用戶只使用Rails中的Devise創建一個配置文件
用戶HAS_ONE輪廓 輪廓belongs_to的用戶
如何可以拋出一個錯誤,如果已經有一個配置文件關聯到他們時,他們試圖創建另一個配置文件的用戶。
所以,如果一個用戶進入example.com/profiles/new它會拋出錯誤
那麼你可以做這樣的事情:
profiles_controller.rb
def new
if current_user.profile.empty?
# create profil for user
else
# raise error which doesn't make sense or redirect like
redirect_to user_profile_path
end
end
非常感謝。仍然在學習這樣的事情,但它確實有幫助! – futureProgrammer25
@ futureProgrammer25,太棒了,很高興我能幫上忙。 –
@ auL5agoi答案不阻止某人訪問創建操作。您想對兩個操作都執行檢查。
def ProfilesController < ApplicationController
before_action :check_profile_presence, only: [:new, :create]
def new
end
def create
end
private
def check_profile_presence
redirect_to user_profile_path if current_user.profile.exists?
end
end
http://guides.rubyonrails.org/action_controller_overview.html#filters
有許多方法可以做到這一點。我建議你查看ActiveRecord驗證和/或鉤子的Rails文檔(例如before_create) – jphager2