原创作者: hideto   阅读:1500次   评论:0条   更新时间:2011-05-26    
Rails里实现多对多有两种方式:
1,has_and_belongs_to_many
# in migration
def self.up
  create_table 'categories_products', :id => false do |t|
    t.column :category_id, :integer
    t.column :product_id, :integer
  end
end

# models/product.rb
has_and_belongs_to_many :categories

# models/category.rb
has_and_belongs_to_many :products

这是最直接的多对多,用中间表categories_products来连接category和product,并且中间表里没有其他字段信息

2,has_many :through
# models/categorization.rb
belongs_to :product
belongs_to :category

# models/product.rb
has_many :categorizations
has_many :categories, :through => :categorizations

# models/category.rb
has_many :categorizations
has_many :products, :through => :categorizations

has_many :through这种方式跟habtm的不同是中间表里可以含有其余的字段信息,并且中间表在Model里明确指出
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics