Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从其他模型导入数据?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 从其他模型导入数据?

Ruby on rails 从其他模型导入数据?,ruby-on-rails,ruby-on-rails-3,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 T

我对以下型号有兴趣:

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独有的带有奖金的曲目

我猜我需要在Product controller的新建和创建操作中添加一些行来促进这一点?有人能提供一些指导吗

在这样一个场景中,一个未在发布级别添加的额外跟踪后来在产品级别添加,我如何确保它也包含在发布级别


将Jquery拖放发布到产品方法是最好的吗

因此您可以执行以下操作:

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
类产品
这样,您应该始终拥有发行版附带的原始曲目列表,以及与Product关联的曲目列表。现在,您可以从产品中添加和删除曲目,并始终了解原始版本附带的曲目


希望这能有所帮助。

必须将:release\u曲目更改为release\u曲目。不过,我在“保存之前”部分遇到了一个错误,它说的是“未定义的方法`release\u track\u ids'”。此外,我看不到对构成HABTM Relationship的products\u tracks表的任何引用?如果你重命名了Association releases\u tracks,那么该方法将是releases\u tracks\u ids。我应该自己发现的!非常好用,谢谢!现在我需要弄清楚的是,如果我在产品创建后在发布级别添加了一个跟踪,我如何在不必删除产品并重新创建产品以拉入所有跟踪的情况下促进包括它?