因此我被要求在Rails中为现有模型添加新的分类。我的第一个模型,让我们说帖子需要获得与新模型兴趣的多对多关系,其中存储了某些感兴趣的领域。每个帖子可以有0到多个这些兴趣。此外,在上线时,这些兴趣已被确定为10个利益的固定列表。
创建新模型的最佳方式是什么,并预先填充10个固定感兴趣区域的表格?
我正在考虑使用种子来填充数据库,但我并没有真正体验到这一点。这是正确的方法,还是我错过了什么?
答案 0 :(得分:1)
由于您的应用程序在实时生产环境中运行,因此最好创建表并使用迁移构建默认关联。播种数据库只应在创建数据库时发生,否则可能会引入重复数据。
class CreateInterests < ActiveRecord::Migration
def migrate(direction)
super
if direction == :up
['Iterest 1', 'Interest 2', ..., 'Interest N'].each do |name|
Interest.create(name: name)
end
interests = Interest.all
Post.all.each do |post|
post.interests << interests
end
end
end
def change
create_table :interests do |t|
t.integer :name
t.timestamps null: false
end
create_table :interests_posts, :id => false do |t|
t.integer :interest_id
t.integer :post_id
end
add_index :interests_posts, [:interest_id, :post_id]
end
end
答案 1 :(得分:0)
你可以使用种子,但对于这么少的初始兴趣对象,我只是在迁移中这样做。
首先创建兴趣模型app/models/interest.rb
,然后生成迁移并对其进行编辑,以便在执行rake db:migrate
时创建行
class CreateInterests < ActiveRecord::Migration
def up
create_table :interests do |t|
t.string :name
t.timestamp
end
Interest.create(name: "Animals")
Interest.create(name: "Flowers")
Interest.create(name: "Dinosaurs")
# add seven more interests...
end
def down
drop_table :interests
end
end