2017-06-20 146 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