Generating a model with many to many in Ruby on Rails

前端 未结 3 1882
深忆病人
深忆病人 2021-02-07 12:31

Is there a way to generate a Rails model with a many to many relationship predefined? I know how to add it to the Active Record after the fact but it would be nice to have it de

相关标签:
3条回答
  • 2021-02-07 12:58

    Remember that you do not want an id for the join table, so make sure to add :id => false |t|

    create_table assemblies_parts, :id => false do |t|
      t.integer :assembly_id
      t.integer :part_id
    end
    

    If you use rails

    rails generate model Assemblies_parts assembly:references part:references
    

    you will have two indexes, but what you want is

    # Add table index
    add_index :assemblies_parts, [:assembly_id, :part_id], :unique => true
    

    UPDATE

    • For Rails 5 use create_join_table instead to create that (id-less) table.
    0 讨论(0)
  • 2021-02-07 13:05

    You can use this reference from the Rails Guides.Here is the link. Also you will need to manually create the join table for those models using a migration.

    e.g

        create_table :assemblies_parts, :force => true do |t|
          t.integer :assembly_id
          t.integer :part_id
        end
    
    0 讨论(0)
  • 2021-02-07 13:19

    Please look at this question first: Creating a many-to-many relationship in Rails 3.

    In addition, I would recommend next book "Ruby on Rails 3 Tutorial: Learn Rails by Example" for a better understanding of ActiveRecord relations.

    0 讨论(0)
提交回复
热议问题