我如何在Rails中实现这一点



我想实现一个功能,用户可以在该功能中向他的配置文件"添加额外的详细信息"。在这里,他应该能够为细节和实际细节创建标签,比如:

Education : Degree 

其中教育是细节的标签,学位是细节。

除此之外,他还应该有一个选项来决定这个细节应该是visible还是hidden

如何使用具有关联User has_one Profile的新模型Profile来实现这一点。

如果新的详细信息只有Label和Text,我本可以尝试hash,但由于我还必须从用户那里获得关于用户是否希望隐藏或显示详细信息的详细信息,我可能需要一个额外的字段来存储该值(true或false)。

我真的很困惑如何才能把整件事落实到一起。

请建议我如何实现这一点,以及如何在每次用户创建新细节时更新模型,而不更改数据库的schema

我在Rails3.2上工作。

我真的没有看到你的问题(或者我不明白),但是:

为什么不用user_id:integer name:string content:string visible:boolean创建一个has_many AdditionalData呢?

因此,您可以循环通过@user.additional_datas.visible(假设您定义了一个作用域scope :visible, where("visible = 1").

额外的好处:你可以让这个模型变形,并将额外的信息添加到你的应用程序中的其他东西中,而不需要为你想要存储这些信息的每个模型创建一个额外的"信息"表。

对于验证,您还可以添加一个data_type字段,并根据数据类型(需要是url、电话号码、仅文本…)创建验证

我也没有看到问题;我认为一个类似哈希的表可能是解决方案,比如这样:

rails generate model UserDetails label:string value:string 
  visible:boolean user:references

你在里面放了这样的记录:

user.details.create(:label => 'Dog name', :value => 'Fuffy' :visible => false)

相关内容

最新更新