ruby-on-rails - 从 rails 中的另一个对象的属性创建一个新对象

标签 ruby-on-rails ruby oop rails-activerecord

在引入 strong params 之前它工作正常。 因此,在使用 new 创建新对象并传递属性时,id 被设置为 nil

但是现在,当我从现有对象 obj1 的属性创建新对象 obj2 时,

obj1 的

id(主键)也被复制到 obj2。

喜欢,

obj2 = Post.new obj1.attributes

因此,当我尝试保存它时出现问题,

obj2.save

ActiveRecord::RecordNotUnique 错误。由于两个对象具有相同的 ID。

我有几个具有相同用例的模型,所以如果我使用 dupexcept,我必须在每个案例中添加相同的内容。

最佳答案

如果你想在一个新对象中复制你的属性,你必须使用以下(特定于 ActiveRecord):

obj2 = obj1.dup

这使得 id(created|updated)_(at|on) 不被复制。还要记住,父关联在新对象中仍然存在。

更多https://apidock.com/rails/ActiveRecord/Core/dup

关于ruby-on-rails - 从 rails 中的另一个对象的属性创建一个新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48640075/

相关文章:

Ruby 语法问题 : Rational(a, b) 和 Rational.new!(a, b)

java - 在 Scala 的实例变量方面需要一些帮助

ruby-on-rails - 在 Ruby on Rails 中打印不带引号的字符串数组

ruby-on-rails - Rails 3 模型,belongs_to 不同的表只在每条记录中

ruby-on-rails - OmniAuth 不适用于 Rails3 中的 Route Globbing

ruby-on-rails - 如何从 Web 应用程序获取桌面通知?

ruby - 创建允许 bang 和 non-bang 选项的方法

ruby - 如何在 Ruby 中获取当前主机的 FQDN?

python - 如何更改类型(对象)的结果?

javascript - OOO JavaScript : object self reference returns undefined but console shows it exists