简体   繁体   English

Rails 3.1,has_many:through,habtm

[英]Rails 3.1, has_many :through, habtm

I have the following models: 我有以下型号:

class Assembly < ActiveRecord::Base
  has_many :manifests
  has_many :parts, :through => :manifests
end

class Manifest < ActiveRecord::Base
  belongs_to :assembly
  belongs_to :part
end

class Part < ActiveRecord::Base
  has_many :manifests
  has_many :assemblies, :through => :manifests
end

Where manifests contains: manifests包含:

assembly_id
part_id
field1
field2
...

How can I update the others fields ( field1 , field2 ...) using habtm? 如何使用habtm更新其他字段( field1field2 ...)?

According to http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many you have to use a has_many-through instead of a habtm relationship (as you did it in your question). 根据http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many,您必须使用has_many-through而不是habtm关系(就像您在问题中所做的那样)。 Then, you can simply use this code to set up the relationship between a part and an assembly: 然后,您可以简单地使用以下代码来设置零件和装配体之间的关系:

#create assembly
ass1 = Assembly.new
ass1.save!

# create part
part_x = Part.new
part_x.save!

# create relationship between assembly and part using the join model Manifest
Manifest.new(assembly: ass1, part: part_x, field1: 1, field2: "test").save!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM