【发布时间】:2026-01-15 01:10:02
【问题描述】:
我有以下嵌套的 if 语句毛球,我想知道是否有更有效的方法来编写此代码(代码行更少,不需要这么多条件)
每个方法在模型中都被命名为_scopes..
box = (params[:b] ? params[:b] : "inbox")
show = (params[:s] ? params[:s] : "all")
if box == "inbox"
if show == "all"
@messages = @current_user.received_messages.all
elsif show == "unread"
@messages = @current_user.received_messages.unread.all
elsif show == "read"
@messages = @current_user.received_messages.read.all
elsif show == "starred"
@messages = @current_user.received_messages.starred.all
else
@messages = []
end
elsif box = "sent"
@messages = @current_user.sent_messages.all
else
@messages = []
end
我的想法是我可以对框使用“调用”类型的方法并显示类似
@current_user.received_messages.call(:box).call(:show).all
也许..?
呃,应该多花点时间玩一下..和我想的一样,我只是使用了错误的方法解决方案
@current_user.send(box).send(show)
【问题讨论】: