在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}
答案 0 :(得分:3)
这很奇怪。我的意思是,我理解为什么它会保存,因为它是其他记录的关系,而不是你正在使用它的那个,但我认为应该很容易在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
在视图中,您还将使用虚拟属性
select :temp_foo_ids, Foo.all.collect {|x| [x.name, x.id]}, {}, {:multiple => true}
我没有对此进行任何测试,但我相信它会起作用;)