如何将 Rails 脚本相互嵌套?
Posted
技术标签:
【中文标题】如何将 Rails 脚本相互嵌套?【英文标题】:How to nest a Rails scriptlets within each other? 【发布时间】:2013-09-28 14:42:48 【问题描述】:我有几个模型是不同类型的用户帐户 - 即用户模型、管理员模型、访客模型。
我正在尝试创建一个论坛作为我正在制作的应用程序的一部分。创建帖子时, user_type 属性设置为创建帖子的用户类型。我想做的事情似乎很简单,但我似乎无法解决。基本上,我想获取创建帖子的人的用户名。我不能只使用 post.user.username 之类的东西,因为我有几个不同的模型,而且我不想用 if 语句做一些丑陋的事情,那么有更好的方法吗?这可能会显示我想要实现的目标(尽管这不起作用):
created by:<%= post.#user_type.username %>
然后会输出到相关代码:
post.user.username
or post.admin.username
or post.guest.username
谢谢!
【问题讨论】:
【参考方案1】:也许是你最好的做法
class Post < ActiveRecord::Base
...
def username
[user,admin,guest].find(&:present?).try(:username)
end
end
您可以将其粘贴到您的模型中,或者更好的是 decorator。
现在您可以在视图中执行此操作:
created by:<%= post.username %>
find
检索响应present?
的第一件事。换句话说,它找到第一个不是 nil 的东西。然后,我们尝试在该方法返回的任何内容上调用username
。如果此帖子没有user
、admin
或guest
,则该方法将返回nil
。
【讨论】:
目前无法测试,但这看起来正是我所追求的,谢谢。经测试会接受。以上是关于如何将 Rails 脚本相互嵌套?的主要内容,如果未能解决你的问题,请参考以下文章