2012-01-21 35 views
1

我有以下型號:的Rails 3.1的has_many:通過,HABTM

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 

其中manifests包含:

assembly_id 
part_id 
field1 
field2 
... 

如何更新其他字段(field1field2 ...)使用habtm?

回答

1

根據http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many您必須使用has_many-through而不是habtm關係(如您在問題中所做的那樣)。然後,您可以簡單地使用此代碼設置零件和裝配之間的關係:

#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!