我需要一个单行代码来生成has_and_belongs_to_many连接表,否则我将回到Django以获得更简单的多对多结构。
rails 3生成模型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
答案 0 :(得分:3)
哦,等等哈哈,我想这可能就是这个伎俩:
rails g model articles_tags article:references tag:references --no-id --no-timestamps
我想知道是否还有压制模型文件的创建(article_tags.rb),这样我就可以使用标准的has_and_belongs_to_many语法而无需指定:通过参数?我正在寻找最终的单线程:对于任何能够改进上述单线程以使仅使用has_and_belongs_to_many语法而无需连接模型的人来说!另外,我将回到Django,它内置了ManyToManyFields。
答案 1 :(得分:2)
听起来你正在寻找标准的has_and_belongs_to_many:
# article.rb
has_and_belongs_to_many :tags
# tag.rb
has_and_belongs_to_many :articles
您的联接表将被称为articles_tags
,并且只需包含两列,article_id
和tag_id
(因为它不是模型,所以不需要id
列)
这是Rails Guide to Associations。我强烈建议您熟悉Rails指南。
发电机几乎太简单了。您只需要两个空模型类和连接表,它们将在迁移中定义,如下所示:
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
答案 2 :(得分:1)
在这么长的时间之后不知道这是否仍然有用,但我认为你可以看看https://github.com/zealot128/ruby-habtm-generator:它是一个Rails生成器,它为HABTM表生成正确的迁移。
答案 3 :(得分:0)
使用generate将创建两个索引