Rails嵌套编辑表单,用于自引用HABTM Active Record对象

时间:2010-02-23 19:09:31

标签: ruby-on-rails activerecord has-and-belongs-to-many action

好的,这个是一个很好的。我有一个ActiveRecord对象,除其他外,包括如下关系:

class Sample < ActiveRecord::Base
  has_and_belongs_to_many :related_samples,
                          :class_name => "Sample",
                          :join_table => "related_samples",
                          :foreign_key => "sample_id"
                          :associated_foreign_key => "related_id"
end

这是它的计划:

def self.up
  create_table :samples do |t|
    t.string :related_info
    t.string :name
    #There's other info, but it is not related to this problem
  end

  create_table :related_samples, :id => false do |t|
    t.references :sample
    t.references :related
    t.timestamps
  end
end

这完美无缺。当我要求sample_object.related_samples时,它给了我分配给它的其他任何Sample对象。

问题出在我的观看次数的编辑操作上。我的目标是允许用户通过从所有可用样本的列表中选择它来将现有的相关Sample对象替换为另一个。我想在fields_for帮助器方法中实现这个(如果可能的话),这样做更新非常简单。我不确定如何实现这一点,或者我甚至可以。可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

我刚刚意识到一些非常重要的事情可能使这个问题无法解决。当我说我希望能够更改另一个与之相关的Sample对象时,我的意思是对它的引用。例如:

Sample1.related_sites == [Sample2, Sample3]

我想做一些事情,以便我可以使用Sample4代替另一个Sample,以便它变为:

Sample1.related_sites == [Sample2, Sample4]

但我希望Sample3保持完整。这意味着引用需要更改,我认为没有任何方法可以比修改我的数据库方案更容易。所以,如果你仍然有一个想法,我很乐意听到它,但我可能会改变一些事情。谢谢,SO社区!