在我的应用程序中,我有一个Widget
模型,一个Feature
具有has_many 通过表关联的模型WidgetFeature
。
根据要求,当我发送一个 WidgetFeature 对象时,我也应该将 feature_name 附加到它,用于关联的给定功能。
有两种方法:
- 发送对象时,请执行以下操作:
widget_feature_object[:feature_name] = feature_name_value
然后我可以在我的控制器或视图中访问它,widget_feature_object[:feature_name]
因为一个对象有(键,值)对,所以我也可以添加另一个。
2. 在模型中创建feature_name
一个虚拟属性,WidgetFeature
然后为其创建getter 和 setter 方法。
据我所知,当您想要创建与模型中实际存在的字段不同的视图时,您应该使用虚拟属性(例如,全名 = 名字 + 姓氏)。
同样的东西也适合这里吗?
另外,Rails 是否对对象进行了一些缓存,当您使用虚拟属性而不是当我使用第一种方法时,这可能会派上用场?
每种方法的优缺点是什么?根据我的要求,哪种方法最适合?非常感谢。