2016-07-27 66 views
0

我在UsersController如何爲Rails has_many關聯創建一個「if語句」?

def show 
    @user = User.find(params[:id]) 

    if current_user.id != params[:id] #! need to fix this 
    @answer = Answer.new 
    else 
    @answer = Answer.find(params[:id]) 
    end 

以下,其中通過測驗模型中的每個用戶的has_many答案。如何編寫if語句,如果答案對於特定用戶而言是空白的,它將跳轉到創建新測驗? (如果不是,則顯示該信息)。

+0

那麼我有點不清楚你在這裏設置的所有細節 - 沒有測驗或答案信息 - 但如果你想檢查一個用戶是否採取了特定的測驗爲什麼不爲用戶創建一個交叉連接表,測驗並且只有在他們參加測驗時纔會設置(或者如果您想要,可以使其更加複雜)。我的信念是,你在答案上的基礎是錯誤的,你應該把它放在測驗上?但是我正在對未見過的東西進行假設( – MageeWorld

+1

)雖然很多人都可能在這種情況下在暗處刺傷,但提供更多信息可能會更有幫助,例如當您說用戶有許多答案通過測驗模型,你指的是一個實際的'has_many:答案,通過::測驗'關係,或只是說用戶has_many測驗,並且測驗has_many答案?或許還會放置你的模型代碼? –

回答

0

我不清楚你的代碼做了什麼不想要的檢查。如果你只是想檢查是否有用戶(假設signed_in用戶)想要有條件地顯示動作,我想你可以試試這個: -

##assuming user has_many answers 
##answer belongs_to user 
def show 
    ##get the user 
    @user = User.find(params[:id]) 
    ##verify if answer is present 
    if @user.answers.present? 
    @answer = @user.answers 
    else 
    @answer = @user.answers.new 
    end 
end 

上述邏輯可用於具有通過協會多爲好,只需要通過模型

更改爲希望它能幫助:)

+0

請爲上帝的緣故不要使用,除非 - 其他 –

+0

更新...謝謝你的收穫.. @ Deepak – Milind

+0

@Milind我用這個,但由於某種原因,它不允許我訪問其他用戶的測驗,給我一個to_key錯誤,如果是這樣,提交時的回答不會顯示在文本字段之後。 – helpisgood