2017-06-20 137 views
-1

在我的應用程序中,用戶提交的每個帖子將是批准否認。我有一個Post模型和在我的posts表中,我有列:approved & denied並且它們都是boolean紅寶石軌道 - 內聯條件與if,elseif&if條件

我認爲我做的:

= is_true?(post.approved)? 'APPROVED' : 'PENDING' 

注:is_true?是一個幫助我在我的ApplicationHelper

def is_true?(object) 
    object == true 
end 

正如代碼表示,如果職位一直approved,它將是批准,否則是PENDING 。這工作正常,但我不知道如何在我的內聯條件中添加DENIED

所以基本上IF後獲得批准,將是批准ELSE IF後一直也沒有被批准或拒絕這將是PENDING & IF後已被拒絕將被拒絕

我知道我可以在我看來寫條件,但代碼變得醜陋,我很喜歡inline conditions和乾淨的方式。

我怎樣才能讓它乾淨?

+0

你寫道:「每一個崗位。 ......將被批准或拒絕「。那麼你建議有一些既不被批准也不被拒絕的帖子。這是一個矛盾。 – sawa

+0

@sawa下次在投票之前正確地閱讀問題!一個職位是*批准*或*拒絕*&當一個職位沒有檢查批准或拒絕,這將是未決的。不要只是四處走動,因爲你不明白問題 – Rubioli

回答

1

因爲你的領域是布爾已經,沒有必要爲冗餘比較的幫手..

您可以直接做..

post.approved? ? 'APPROVED' : post.denied? ? 'DENIED' : 'PENDING' 

這是一個班輪這會工作,短篇小說長,它可以去你的模型,並從view..as一個襯墊有時混淆稱之爲..

def status 
    if approved? 
    'APPROVED' 
    elsif denied? 
    'DENIED' 
    else 
    'PENDING' 
    end 
end 

從視圖,

post.status 

UPDATE

按照該意見,OP具有多種型號這些領域,寫一個助手將使它更作爲

def status_of(object) 
    if object.approved? 
    'APPROVED' 
    elsif object.denied? 
    'DENIED' 
    else 
    'PENDING' 
    end 
end 
+0

感謝你的答案,並感謝您指出'助手'功能的一堆Farhan :)讚賞吧 – Rubioli

+0

不客氣.. :) –

+0

只有一個問題。在哪裏'def status'到除了'model'之外的其他地方,這樣我就可以將它重用於我的其他模型了?所有人都有'批准'和'否認':) – Rubioli