0

我有一个属于用户的 Post 模型。
我这样显示用户名: @post.user.name如果用户取消了他们的帐户,它将不再起作用,因为该用户为零。
有没有办法让后备用户(例如“已删除用户”)?

我虽然关于禁用用户而不是删除它们,但在某些情况下我可能想删除它们。

4

1 回答 1

0

有一个叫做 Null Pattern 的概念,你可以实现这样的东西

class NullAuthor
  def name
    "Deleted user"
  end
end

你会在你的 ActiveRecord 模型中像这样使用它

class Post < ActiveRecord::Base
  belongs_to :user

  def author
    @author ||= if user.present?
                  user
                else
                  NullAuthor.new
                end
  end
end

这样,您就不必检查 post 用户是否为 nil :)

于 2013-06-24T22:54:09.087 回答