0

has_and_belongs_to_many結合テーブルを生成するためにワンライナーが必要です。そうでない場合は、Djangoに戻ってより単純な多対多の構成を取得します。

rails3はモデルarticle_tagsを生成します[..]

Models

# article.rb
has_many :articles_tags
has_many :tags, :through => :articles_tags

# tag.rb
has_many :articles_tags
has_many :articles, :through => :articles_tags

# article_tag.rb
belongs_to :tag
belongs_to :article
4

4 に答える 4

3

ああ待ってハハ、私はこれがトリックをするかもしれないと思います:

rails g model articles_tags article:references tag:references --no-id --no-timestamps

モデルファイル(article_tags.rb)の作成を抑制して、:through paramを指定せずに標準のhas_and_belongs_to_many構文を使用できるようにする方法があるのではないかと思いますか?私は究極のワンライナーを探しています:結合モデルなしでhas_and_belongs_to_many構文の使用のみを可能にするために上記のワンライナーを改善できる人への帽子のヒント!それ以外の場合は、ManyToManyFieldsが組み込まれているDjangoに戻ります。

于 2011-08-02T16:02:49.830 に答える
2

標準のhas_and_belongs_to_manyを探しているようです。

# article.rb
has_and_belongs_to_many :tags

# tag.rb
has_and_belongs_to_many :articles

結合テーブルはと呼ばれarticles_tags、2つの列を含める必要がありますarticle_idtag_idモデルidではないため、列は必要ありません)。

これは、Rails GuidetoAssociationsにあります。Railsガイドに精通することを強くお勧めします。

ジェネレーターとしては単純すぎます。必要なのは、2つの空のモデルクラスと結合テーブルだけです。これらは、次のように移行で定義されます。

def self.up
  create_table :articles_tags, :id => false do |t|
    t.integer :article_id
    t.integer :tag_id
  end
end

def self.down
  drop_table :articles_tags
end
于 2011-08-02T09:17:04.550 に答える
1

久しぶりにこれがまだ興味深いかどうかはわかりませんが、https://github.com/zealot128/ruby-habtm-generatorをご覧ください。これはRailsジェネレーターであり、 HABTMテーブル。

于 2013-01-04T18:35:54.973 に答える
0

generateを使用すると、2つのインデックスが作成されます

この回答を確認してくださいhttps://stackoverflow.com/a/9825571/643500

于 2012-03-22T15:52:43.463 に答える