在我的应用程序中,用户提交的每个帖子都将被批准或拒绝。我有一个Post
模型,在我的posts
表中,我有列:approved
& denied
并且boolean
都是= is_true?(post.approved)? 'APPROVED' : 'PENDING'
。
在我看来,我做了:
is_true?
注意:ApplicationHelper
是我def is_true?(object)
object == true
end
approved
正如代码所说,如果帖子是inline conditions
,那么它将是 APPROVED ,否则就是 PENDING 。这很好,但我不知道如何在我的内联条件中添加 DENIED 。
所以基本上 IF 帖子已获批准,它将 APPROVED , ELSE IF 帖子已被批准或被拒绝将待定& IF 帖子被拒绝后, DENIED 。
我知道我可以在我的视图中写出条件,但代码变得丑陋而且我是float
的粉丝并且干净利落。
我怎样才能让它干净?
答案 0 :(得分:1)
由于您的字段已经是布尔值,因此不需要帮助程序进行冗余比较。
你可以直接做..
post.approved? ? 'APPROVED' : post.denied? ? 'DENIED' : 'PENDING'
这是一个可以工作的短班,短篇故事长,可以转到你的模型并从视图中调用它......有时候一个衬里有点令人困惑......
def status
if approved?
'APPROVED'
elsif denied?
'DENIED'
else
'PENDING'
end
end
从视图中,
post.status
<强>更新强>
根据评论,OP在多个模型中有这些字段,写一个帮助器会使它更像 DRY
def status_of(object)
if object.approved?
'APPROVED'
elsif object.denied?
'DENIED'
else
'PENDING'
end
end