从其他模型插入数据?

时间:2012-02-29 15:01:15

标签: ruby-on-rails ruby-on-rails-3

我有以下型号:

class Release < ActiveRecord::Base
    has_many :products, :dependent => :destroy
    has_and_belongs_to_many :tracks
end

class Product < ActiveRecord::Base
    belongs_to :release
    has_and_belongs_to_many :tracks
end

class Track < ActiveRecord::Base
    has_and_belongs_to_many :releases
    has_and_belongs_to_many :products
end

在我创建发布时,我可以为其分配曲目。当我创建一个产品(在一个版本下)时,我希望它继承分配给它的轨道,但能够修改顺序,添加和删除轨道。

这种方法背后的原因是,在大多数情况下,曲目在多个产品中是相同的,因此可以节省重新列出/上传曲目的工作量。我可以简单地从发行版中拉出曲目,但我必须有能力改变这一点,例如可能有iTunes专属的奖励曲目。

我猜我需要在新的&amp;创建产品控制器的动作以促进这一点?任何人都可以提供一些指导吗?

如果稍后在产品级别添加了未在发布级别添加的额外轨道,我如何确保它也包含在发布级别?

Jquery拖放Release to Product方法是否最佳?

1 个答案:

答案 0 :(得分:1)

所以你可以做如下的事情:

class Product < ActiveRecord::Base
  belongs_to :release
  has_many :release_tracks, through: :release, source: :tracks      

  has_and_belongs_to_many :tracks

  before_save do
    self.track_ids = self.release_track_ids
  end
end

这样,您应该始终拥有该版本附带的原始曲目列表,并且您有一个与该曲面相关联的曲目列表。现在,您可以添加和删除产品中的曲目,并始终了解原始版本附带的曲目。

希望这有帮助。