Rails 5 中具有多态关联的嵌套属性

2023-12-29

我创建了一个Address具有多态关联的模型,我试图通过客户端模型的嵌套属性保存到它,但我得到Address addressable must exist in the @client.errors.

Models:

class Client < ApplicationRecord
  has_one :address, as: :addressable, dependent: :destroy
  accepts_nested_attributes_for :address, :allow_destroy => true
end

class Address < ApplicationRecord
  belongs_to :addressable, polymorphic: true
end

控制器:

class ClientsController < ApplicationController

  def new
    @client = Client.new
    @client.create_address
  end

  def create
    @client = Client.new(client_params)

    if @client.save
      ...
    else
      ...
    end
  end

  private
  def client_params
    params.require(:client).permit(:first_name ,:last_name, :company, address_attributes: [:line1, :line2, :line3, :city, :state_province, :postal_code, :country])
  end    
end

您应该添加inverse_of https://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#module-ActiveRecord::Associations::ClassMethods-label-Setting+Inverses关键在你的belongs_to关系,例如在你的Address class:

class Address < ApplicationRecord
  belongs_to :addressable, polymorphic: true, inverse_of: :addressable
end

这将正确保存嵌套地址,因为 Rails 现在将正确知道要在addressable.

不要使用optional键,除非addressable确实是可选的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 5 中具有多态关联的嵌套属性 的相关文章

  • Ruby on Rails link_to 与 put 方法

    我是 Rails 新手 我正在尝试使用 link to 帮助程序创建一个发出 PUT 请求而不是 GET 请求的链接 具体来说 我正在尝试创建一个链接 从管理员面板激活我的应用程序中的用户帐户 我正在使用 Rails 3 0 5 我的rou
  • 如何访问 has_many :through 关联对象的相关连接模型而不需要额外的查询?

    这是我现在已经遇到过很多次的事情 我很想弄清楚如何做我想要的事情 或者构建并向 Rails 提交一个补丁来实现它 很多时候 在我的应用程序中 我会有一些看起来像这样的模型 class User lt ActiveRecord Base ha
  • 安装 Rails Apartment gem 时出现问题

    当我尝试时出现错误 bundle exec rails generate apartment install 收到此错误 build Apartment Reloader 的未定义方法新 字符串 无方法错误 看起来这是一个中间件问题 任何解
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • 限制 has_many 关联中的对象数量

    我有一个相册 里面有很多照片 counter cache 设置会更新相册表中的 photos count 列 如何限制相册的照片数量 就我而言 使用就足够了validates length of class Album has many p
  • 使用 Ruby on Rails 索引多列

    我在 Mysql 数据库中有一个表 我想在其上使用多列索引 如何在不使用 mysql 控制台的情况下在 Rails 中执行此操作 在迁移定义中 您可以这样做 add index table name column1 column2
  • Rails/heroku 从 gem 迁移到 toolbelt

    我曾经在一个项目中使用过 heroku gem 既然工具带已经出来了 我想换一个 我从 Gemfile 中删除了 gem 并通过 gem uninstall heroku 卸载了它 我使用heroku网站上的pkg安装了heroku工具带
  • 未签出...捆绑安装无法修复帮助!

    https github com intridea omniauth git at master is not checked out Please run bundle install Bundler GitError 那我该怎么办 捆绑
  • 默认更新嵌套属性

    我尝试更新 iProduction 这是生产中的嵌套表单 但此行出现参数错误 参数数量错误 0 代表 1 生产 update iproducts attributes cow id cow 我的创作动作制作 def create produ
  • 在 Rails ActiveAdmin 视图中添加指向 Flash 通知的链接

    我正在尝试在活动管理控制器成功创建操作的闪存消息中添加链接 但是该链接的 HTML 被转义并在视图上显示为纯文本 Rails 5 2 1 ruby 2 5 3p105 2018 10 18 修订版 65156 x86 64 linux 例如
  • 使用 Devise 和 Rails 从 Twitter Oauth 获取电子邮件

    我已经设置了一个基本的 Rails 应用程序来使用 twitter oauth gem 和设计 并且已经能够登录用户 但是 我的问题是我现在已将我的应用程序列入白名单 并且我想在响应中收到用户的电子邮件 我已遵循 Twitter 端的所有必
  • simple_fields_for 没有出现 [rails 4]

    我正在尝试创建两个隐藏字段 其中一个显示没有问题 但来自嵌套表单的另一个则没有 产品 rb class Product lt ActiveRecord Base has many product options dependent dest
  • 将文件传递给活动作业/后台作业

    我通过标准文件输入接收请求参数中的文件 def create file params file upload Upload create file file filename img png end 但是 对于大型上传 我想在后台作业中执行
  • Rails - 使用 %W

    我有以下效果很好的 def steps w hello billing confirmation end steps first 但我想这样做 def step title w Upload a photo Billing Info Con
  • Rails validates_与模型的错误消息相关

    我在模型中使用 validates linked 来使用其他模型的验证代码 问题是验证失败的消息是 is invalid 我想将模型验证失败的实际描述错误冒泡到顶部 我发现这个问题 验证与模型的错误消息关联 https stackoverf
  • 如何使用 AngularJS、Devise 和 UI Router 全局实现身份验证?

    我对 Angular 很陌生 所以这可能是一个新手问题 我正在尝试实现一个简单的任务管理器 只是一个练习 以 Rails 作为后端 以 Angular 作为前端 到目前为止 我遵循了教程 一切正常 现在我想在全球范围内实施身份验证 这意味着
  • 为什么安装 Ruby 1.9.3 时会出现 404 错误?

    我最近擦除了我的计算机 操作系统 Mac OS X 10 6 8 并重新安装了所有开发工具 我再次安装了RVM 但是 它不允许我安装 Ruby 1 9 3 到目前为止我已经尝试过 rvm install 1 9 3 rvm install
  • Rails escape_javascript 通过转义单引号创建无效的 JSON

    ActionView中的escape javascript方法转义撇号 作为反斜杠撇号 解析为 JSON 时会出错 例如 消息 我在这里 在打印时是有效的 JSON message I m here But 输出 I m here 导致无效
  • 应该使用 Rspec Gem 在 Belong_to 测试中返回“String:Class 的未定义方法‘reflect_on_association’”

    在我的 Rails 应用程序中 我有我的模型Request Service and ServiceRequest 在我的 models rb 文件中 我有 request rb class Request lt ApplicationRec
  • Rails 7 缺失部分

    我正在升级到 Rails 7 1 并在使用 JS 部分的视图中遇到奇怪的错误 缺少部分 account stripe js erb application stripe js erb 与 locale gt fr formats gt ht

随机推荐

  • 输入类型数字“仅数字值”验证

    我如何验证输入type number 仅当值是数字或 null 时才有效 仅使用响应式表单 无指令 仅数字 0 9 和 允许 不允许有 e 或任何其他字符 到目前为止我尝试过的 模板
  • 修改linux内核定时器

    我必须运行延迟敏感的应用程序 并且被要求将计时器分辨率更改为 1000 Hz 或更高 我在网上搜索了一下 找到了有关 CONFIG HZ 等的页面 但是 文件中似乎还有其他几个相关设置 因此我想确保不会弄乱这些设置 我在这里发布一些输出 c
  • C++:指向 std::string 转换的 char 指针是否复制内容?

    当我转换一个char to std string使用构造函数 char ps Hello std string str ps 我知道 std 容器在被要求存储值时倾向于复制值 是复制整个字符串还是仅复制指针 如果之后我这样做str Bye
  • 包“com.sun.webkit.dom”在模块“javafx.web”中声明,该模块不会将其导出到模块

    试图从Java 8 to Java 9 我得到这个错误 包 com sun webkit dom 在模块 javafx web 中声明 其中 不将其导出到模块 我该如何解决这个问题 以便预编译器 Intellij 和运行时我不明白这个问题
  • 语法平衡问题

    是否可以强制灵气提升以这种方式表现 生成的语法可以根据一些运行时可计算的条件 规则 速率进行调整 例如 输入由语言结构组成 这会在解析过程中导致不同的选择 有些更频繁 另一些则更少 但替代方案的顺序会影响效率 即语法的运行时最优性 在某些情
  • 上标和下标有 Ansi 转义序列吗?

    我正在玩弄 ANSI 转义序列 例如 echo e e 91mHello e m 在 Linux 控制台上显示彩色文本 现在我尝试使用上标和下标输出 例如a b I read here http www inwap com pdp10 an
  • Jackson JSON 和 Hibernate JPA 的无限递归问题(又一个)

    我找到了大量这方面的资源 例如这个 Jackson JSON 和 Hibernate JPA 问题的无限递归 https stackoverflow com questions 3325387 infinite recursion with
  • 使用 asp.net mvc 用逗号分隔数字

    我正在开发 MVC2 应用程序 我使用数据注释来验证数据 客户端和服务器端 我的模型中有几个字段只允许十进制值 一旦用户输入十进制值 我希望将其转换为逗号分隔的更易读的格式 例如 1200 应格式化为 1 200 而 500 应保持原样 这
  • JavaScript API 不适用于 Excel 2013?

    我刚刚收到了针对我提交的一个加载项的更改建议报告 它说Your add in is not working in the Excel 2013 client on Windows 7 with Internet Explorer 11 我一
  • 如何将 request.getParameterNames 放入字符串列表中?

    是否可以得到request getParameterNames 作为字符串列表 我需要以这种形式提供它 Just 构造 http docs oracle com javase 6 docs api java util ArrayList h
  • memset 不适用于指向字符的指针

    下面的代码有什么问题 memset 应该与指向要填充的内存块的指针一起使用 但此代码在控制台中显示问题 提示分段错误 核心已转储 include
  • 使用 javascript 或 jquery 从外部 xml 文件加载数据

    Hi 我有一个如下所示的 xml 文件
  • Apple ID 可从 Cocoa Touch 内的应用程序下载中检索

    你好 我正在开发一个 iPhone 应用程序 每次下载都需要维护一个唯一的标识符 有没有办法检索用于下载应用程序的 Apple ID 或其他标识符 我可以使用该标识符将所有设备与该下载链接到远程数据库 服务 基本上我想要一个自定义生成的数据
  • Git 递归地将遥控器添加到子模块

    我的机器上有一个 git 存储库 地址为 path to repo 其中包含几个子模块 path to repo submoduleA and path to repo foo bar submoduleB 由于我无法更改工作流程 git
  • Node.js - 注册时发送电子邮件

    我有带有单个电子邮件字段的注册表单 当用户输入电子邮件时 我需要发送注册链接 我见过this https github com alexyoung nodepad blob master app js带有注册表单的 Node js 示例 但
  • 如何将角度应用程序嵌入到另一个应用程序中?

    我的团队开发了一个 Angular 5 应用程序 该应用程序已经投入生产一段时间了 但我们最近的任务是让该应用程序在公司拥有的其他 3 个站点上运行 一个站点是使用 Angular6 构建的 SPA 另一个站点也是 SPA 但使用 Angu
  • 单独的 DataGrid 行可见性

    我有一个WPFDataGrid绑定到一个集合Entity Framework父 EF 对象内部的对象 大致如下
  • jQuery text() 调用在 Firefox 中保留换行符,但在 IE 中则不然

    我正在做 alert div text 在这样的事情上 div lt div gt Some text lt div gt div 为什么要转义内容 因为它有时格式错误 我不希望它干扰或破坏文档的其余部分 在 FF 中它显示保留换行符 在
  • 如何在计划查询中显示和更改用户

    Google Cloud Platform 中的一些计划查询突然不再运行 并显示消息 访问被拒绝 用户没有表的 bigquery tables get 权限 首先 是否可以查看计划查询在哪个用户下运行 第二 可以更改用户吗 谢谢 西尔万 我
  • Rails 5 中具有多态关联的嵌套属性

    我创建了一个Address具有多态关联的模型 我试图通过客户端模型的嵌套属性保存到它 但我得到Address addressable must exist in the client errors Models class Client l