gpt4 book ai didi

ruby-on-rails - 单表继承与 CRUD 和 Rails 中的表单

转载 作者:行者123 更新时间:2023-12-04 06:05:32 26 4
gpt4 key购买 nike

我对 Rails 中的 STI 有点困惑。

我的情况:
我有一个 Contact具有 description 的模型和 data字符串字段,用于存储一些联系人,如电话、传真、电子邮件等。

现在,当我有一些特定的联系人类型(如电子邮件地址的电话号码)时,我想以不同的方式验证数据格式,并且我想对输出进行一些不同的格式化。

我决定使用 STI,因为所有模型都具有相同的数据,只是行为不同。我对表单和 CRUD 操作有一些疑问,因为我不想违反 Rails 约定。

  • 如何以模型类型的形式制作下拉列表?我应该对其进行硬编码还是有一些更自动化的方法?
  • 如何创建记录?我应该使用 switch声明并根据收到的类型创建相应实例的新模型?
  • 如果我要更改模型类型,我应该如何更新它?将对象强制转换为新类?或者创建一个新对象并销毁前一个对象?

  • 我将非常感谢您的帮助!

    最佳答案

  • 是的,应该做一个硬核,因为您的 STI 模型没有默认存储。
  • 一般来说,是的。但是有了 Rails,你就可以使用 camelize.constantize从字符串中获取类。另一种方法是使用父模型,并设置 type手动字段。与 STI 一样所有记录都在同一个表中,然后都是父类。
  • 如果您想更新,只需更新 type field 。然后您可以重新查询以强制 Rails 获取不同类型的新对象。
  • 关于ruby-on-rails - 单表继承与 CRUD 和 Rails 中的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11578620/

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