gpt4 book ai didi

ruby-on-rails - 使用 collection_singular_ids=ids 而不保存到数据库

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

在 Rails 中,我使用 other_ids=[...] 方法在 has_many :through 关联上分配连接。它工作正常,除非我不想将 other_ids=[...] 提交到数据库(使用此方法分配会自动保存)。

有没有办法在只使用 Model.new 的同时分配这些连接?当我提交一个包含 has_many 关系复选框的表单时,这很有用。当表单未保存时(验证失败时),选中的复选框将被重置。

型号:

class Job < ActiveRecord::Base
has_many :categories
attr_accessible :category_ids
end

查看:

select :category_ids, Category.all.collect {|x| [x.name, x.id]}, {}, {:multiple => true}

最佳答案

这很奇怪。我的意思是,我理解它为什么会保存,因为它是其他记录的关系,而不是你正在处理的记录的关系,但我认为在 AR 中实现该功能应该很简单。

无论如何,您可以执行以下操作来解决此问题。使用虚拟属性

class Bar < ActiveRecord::Base
after_save :save_foos
has_many :foos

attr_accessor :temp_foo_ids # Bad name for it but whatever...
attr_accessible :temp_foo_ids

def save_foos
foo_ids = temp_foo_ids # it should save the record like this again right?
end
end

在 View 中你也可以使用虚拟属性

select :temp_foo_ids, Foo.all.collect {|x| [x.name, x.id]}, {}, {:multiple => true}

我还没有测试过任何东西,但我相信它会起作用;)

关于ruby-on-rails - 使用 collection_singular_ids=ids 而不保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13426229/

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