嵌套资源的Rails回退



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

我想禁用用户而不是删除他们,但在某些情况下,我可能想删除他们。

有一个称为Null模式的概念,您可以实现类似于的东西

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:)

最新更新