gpt4 book ai didi

ruby-on-rails - Rails 数据/基准变形问题

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

在我的 Rails 3.2.6 应用程序中,我有一个模型表示有关小部件的数据集合。在我看来,此类的正确名称是 WidgetData,复数形式,因为每个小部件有不止一项数据。

如果我要求 Rails 为这个类生成一个表单:

= form_for @widget_data do |f|
...

我得到一个错误 ActionView::Template::Error (undefined method 'widget_datum_path' ...。大概这是因为 Rails 数据/数据变形规则。

我不确定如何最好地解决这个问题:我可以让 Rails 指示我的模型实际上应该是 WidgetDatum。或者我可以以某种方式在这种特殊情况下禁用变形规则的使用,但我不确定如何最好地做到这一点。

预测一个可能的答案:模型不只是称为 Widget 的原因是我已经有一个名为该名称的 façade 类,它呈现了包含 的小部件的更丰富的 View >WidgetData等信息。

最佳答案

将此代码添加到文件:config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect|

inflect.irregular 'widgetdata', 'widgetdatas' # or whatever you want your plural to be

end

解决您对“复数,因为每个小部件有不止一项数据。”的评论。

想法是每一行小部件数据都是它自己的对象。 Active Record 将为每一行数据创建一个 WidgetData 实例。您的数据库表应该命名为(根据 Rails 约定)WidgetData,因为该表包含许多 WidgetDatums。但是在 Rails 中,每一行数据都根据您的模型类实例化为一个单独的对象。只要您正确配置变形,它就会以任何一种方式工作。我通常只在基于现有数据模型构建接口(interface)时才尝试这样做。但即便如此,您也会意识到有时在现有模型之上构建新的 Rails 数据模型会更好,在您的模型中使用 self.table_name = 'old table name convention'

关于ruby-on-rails - Rails 数据/基准变形问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192587/

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