USECASE:
请考虑以下示例。
Class Foo < ActiveRecord::Base
belongs_to :user
attr_accessible :title
end
Class User < ActiveRecord::Base
has_many :foo
attr_accessible :name
end
如果登录用户创建Foo,它将与其用户记录关联。如果未登录的用户创建Foo,则它不会与任何用户关联。这只是一个例子,我的应用程序中有很多类似的用例。
问题:
问题是我的视图代码变得混乱了很多if条件和三元操作,如
<% foo.user ? foo.user.name : "not set"%>
当前解决方案:
为了解决这个问题,我使用的是空对象设计模式。 User类定义NullUser对象(其名称将设置为“not set”)。如果foo对象没有用户对象,它将返回一个NullUser对象。我已经覆盖了Foo类中的用户方法,该方法执行nil检查。
问题: