2015-05-02 58 views
0

我有一個使用設計的用戶模型和配置文件模型。限制用戶只使用Rails中的Devise創建一個配置文件

用戶HAS_ONE輪廓 輪廓belongs_to的用戶

如何可以拋出一個錯誤,如果已經有一個配置文件關聯到他們時,他們試圖創建另一個配置文件的用戶。

所以,如果一個用戶進入example.com/profiles/new它會拋出錯誤

+1

有許多方法可以做到這一點。我建議你查看ActiveRecord驗證和/或鉤子的Rails文檔(例如before_create) – jphager2

回答

1

那麼你可以做這樣的事情:

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 
+0

非常感謝。仍然在學習這樣的事情,但它確實有幫助! – futureProgrammer25

+0

@ futureProgrammer25,太棒了,很高興我能幫上忙。 –

1

@ 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

相關問題