ruby-on-rails – 为其他用户设置Profile模型的一些属性的最佳方法是公共(可见)还是私有(不可见)?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 为其他用户设置Profile模型的一些属性的最佳方法是公共(可见)还是私有(不可见)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Profile模型,它有很多属性,如电子邮件,图像,年龄,地址等.
最终用户可以将某些属性设为私有,以便其他用户无法查看该属性.
我通过向表private_attr添加一个列并将其序列化以存储如下的哈希来解决此问题: –
{email: true,address: true,age: false }

这里作为具有值true的键的属性被认为是私有的,并且除了这些属于谁之外不向用户显示.

我想知道这是解决这个问题的最佳方法,还是有其他办法.
提前致谢.

解决方法

我认为你可以序列化用户想要在数组中私有的字段(而不是散列).像[:email,:address](使用你的例子)

然后,当您渲染视图时,只需检查该列中是否存在该字段.就像是

<%= user.email unless user.private_fields.include?(:email) %>

您甚至可以将该逻辑提取到视图助手以避免重复.

<%= show_if_allowed(user,:email) %>

然后创建一个这样的帮助器

def show_if_allowed(user,field)
    user[field] unless user.private_fields.include?(field)
end

猜你在找的Ruby相关文章