- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用Rails的accepts_nested_attributes_for方法取得了巨大成功,但是如果记录已经存在,我如何才能让它不创建新记录?
举个例子:
假设我有三个模型,Team、Membership 和 Player,每个团队通过membership 有很多玩家,并且玩家可以属于多个团队。然后,Team 模型可能会接受玩家的嵌套属性,但这意味着通过组合 team+player(s) 表单提交的每个玩家都将被创建为新的玩家记录。
如果我只想在没有同名玩家的情况下以这种方式创建新的玩家记录,我应该如何做?如果存在同名球员,则不应创建新的球员记录,而是应找到正确的球员并将其与新的球队记录关联。
最佳答案
当您定义自动保存关联的 Hook 时,将跳过正常的代码路径并调用您的方法。因此,您可以这样做:
class Post < ActiveRecord::Base
belongs_to :author, :autosave => true
accepts_nested_attributes_for :author
# If you need to validate the associated record, you can add a method like this:
# validate_associated_record_for_author
def autosave_associated_records_for_author
# Find or create the author by name
if new_author = Author.find_by_name(author.name)
self.author = new_author
else
self.author.save!
end
end
end
此代码未经测试,但它应该是您所需要的。
关于ruby-on-rails - 接受_nested_attributes_for 和find_or_create?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3579924/
我想使用以下命令在数据库中更新记录 Profile.find_or_create(fname: contact.FirstName, lname: contact.LastName, compan
我正在尝试使用 ActiveRecord 的 find_or_create_by_*column* ,但我从 Postgres 收到错误,让我知道它偶尔无法找到模型,并尝试插入模型。保持这张表的唯一性
我一直对 rails 感到疑惑的是,它能够将额外数据传递给 rails 中的 find_or_create 方法。例如,我不能执行以下操作 User.find_or_create_by_name('c
如果找到记录,Rails find_or_create_by() 是否也会更新记录属性。如果没有,是否有一种简单的方法来查找或创建记录,以及该记录是否已存在;更新记录属性 最佳答案 听起来你想要做一个
我仍在学习 Perl 和 CLASS::DBI。我有一个执行大量查找的脚本,我只想插入查找找到的新项目。我为 username,created_at 创建了一个复合键,并使用以下代码将其插入到表中。
如果我为锻炼创建新练习,我的字段 member_id 为空。 锻炼.rb belongs_to :member has_and_belongs_to_many :exercises
我在处理包含 rust HashMap 的结构时遇到问题。 假设我有以下类型: pub type KeyType i32; pub enum StatusType { Locked, Unlocked
我有一个非常简单的应用程序。这个应用程序需要做的就是检查用户名是否存在。如果是,则重定向到用户。如果不存在,则根据输入的用户名创建一个新用户并重定向到新用户。由于某种原因永远不会创建新用户,但 fin
使用 ruby 2.1.2 和 rails 4.1.4。我对数据库中的电子邮件列有唯一约束。如果存在一个线程正在创建用户而另一个线程试图同时创建的竞争条件,则会引发记录不唯一的异常。我正在尝试通过
有几种方法:first_or_create_by、find_or_create_by等,它们的工作原理是: 与数据库对话以尝试找到我们想要的东西 如果我们找不到,就自己做 保存到数据库 显然,并发调用
我使用 Rails 的 accepts_nested_attributes_for 方法取得了巨大的成功,但是如果记录已经存在,我怎么能不创建新记录呢? 我找到了这篇文章,accepts_nested
在此链接Rails find_or_create by more than one attribute?可以在事件记录中使用多个属性。 如何在 mongoid 中使用多个属性? 谢谢 最佳答案 如果你
来自 find_or_create 的文档: Note: Because find_or_create() reads from the database and then possibly inse
我有一个对象 Message 仅由该行创建: Message.find_or_create_by(:api_id => params['message_id']) 理论上,我不应该有两条具有相同 ap
很抱歉标题太长,但这让我很困扰。我是 Rails 的新手,所以这是我的第一个项目。导轨 3.0.3。 在我的模型中,用户 可能会或可能不会阅读很多条目;这是在名为 ReadEntries 的模型中进行
我是一名优秀的程序员,十分优秀!