一个博客可以有多个帖子,而一个帖子属于一个博客。我正在使用以下命令:
rails generate model Blog /* properties... */ post:has_many
rails generate model Post /* properties... */ blog:belongs_to
谢谢。
这是我第一次使用Rails,我没有找到确切的方法来生成具有关联的新模型(和迁移)。例如,我有两个实体:博客帖子一个博客可以有很多帖子,...
rails generate model Blog /* properties... */
然后在模型中手动添加has_many :posts
:)
# rails generate model Post blog:belongs_to
class CreatePosts < ActiveRecord::Migration[5.0]
def change
create_table :posts do |t|
t.belongs_to :blog, foreign_key: true
t.timestamps
end
end
end
为什么class Post < ApplicationRecord
belongs_to :blog
end
不能使用相同的功能?
模型生成器的参数是模型的属性。 has_many
是由数据库列支持的实际属性。blog_id
不是属性。这是一个元编程方法,它向您的Blog实例添加了has_many
方法。您需要将其手动添加到模型中。
如果运行posts
,Rails实际上将使用这些属性创建迁移:
rails g model Blog posts:has_many foo:bar
Rails不键入检查参数。当然,迁移实际上不会运行:
class CreateBlogs < ActiveRecord::Migration[5.0]
def change
create_table :blogs do |t|
t.has_many :posts
t.bar :foo
t.timestamps
end
end
end