gpt4 book ai didi

ruby-on-rails - 简化的 'logical' 模型可以干净地访问高度规范化的数据库

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:16 24 4
gpt4 key购买 nike

我知道使用表单添加/编辑/删除(嵌套)记录的一种方法是在相应的模型中使用 :accepts_nested_attributes_for: 。但是,当这种嵌套扩展到大约4层时(因为数据库的规范化),并且我想在网站上显示所有这些层级以供编辑,这种方法似乎很麻烦(而且很难看)。

我想知道是否有一种方法可以使用 getter 和 setter 方法定义“ super ”模型,让我可以在一个地方编辑必要的数据。作为一个简化示例,请考虑:

class Person < ActiveRecord::Base
attr_accessible :name, :age

has_one :address
end

class Address < ActiveRecord::Base
attr_accessible :street, :zip, :country

belongs_to :person
end

我想以一种形式显示/编辑/更新/等姓名、年龄、街道、邮政编码、国家/地区。很清楚如何使用 accepts_nested_attributes_for 来做到这一点。但是我想要一个类,比如 PersonalInformation,它通过传入来自 Person 的 id 来组合来自两个类的字段 name、age、street、zip、country。然后我想使用这个类作为网站的接口(interface)。

最佳答案

类似于此处描述的表单对象:

http://robots.thoughtbot.com/activemodel-form-objects

我一直在尝试各种实现,但还没有找到完美的解决方案,但它们确实简化了“将一堆模型放在一起”。 codeclimate 博客也谈到了它(第 3 项):

http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models

codeclimate 帖子使用了一种包含 ActiveModel 模块的旧方法(除非您现在需要,否则无需单独包含它们)但概念是相同的。

关于ruby-on-rails - 简化的 'logical' 模型可以干净地访问高度规范化的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com