大多数情况下,我在seeds.rb 中的条目都很简单,如下所示:
User.create!(
name: "Peter"
admin: false;
# etc.
)
如果我收到“无法批量分配受保护的属性”错误,我会在模型中进行一些小的更改,在本例中为 user.rb:
attr_accessible: name, admin
到现在为止还挺好。但是我应该如何将条目播种到由 rails gem 生成的表中,从而为我的应用程序添加另一个引擎?例如,前锋。我敢肯定还有其他人。
我已将这些条目添加到我的seeds.rb 文件中:
Forem::Category.create!(
name: "cat1"
)
Forem::Forum.create!(
title: "forum1",
description: "forum1 description",
category_id: 1
)
Forem::Topic.create!(
forum_id: 1,
user_id: 1,
subject: 'topic1',
locked: false,
pinned: false,
hidden: false,
)
类别和论坛已生成,主题不是:
Can't mass-assign protected attributes: forum_id, user_id, locked, pinned, hidden
如果我有一个 topic.rb 模型,我会知道该怎么做。但我没有。Forem 是一个引擎,我不知道如何使模型 topic.rb 的某些属性可见。
我知道application.rb中的这一行:
config.active_record.whitelist_attributes = true
启用防止批量分配的保护。禁用它会留下一个巨大的安全漏洞,所以它不是一个选择。并且禁用它无论如何都不允许我进入主题表。
我也尝试过使用固定装置。我将此添加到我的seeds.rb 文件中:
require 'active_record/fixtures'
Fixtures.create_fixtures("#{Rails.root}/test/fixtures", "topics.yml")
测试/topics.yml:
one:
id: 1
forum_id: 1
user_id: 1
subject: "topic1"
created_at: 2012-05-19 19:54:19
updated_at: 2012-05-19 19:54:20
locked: false
pinned: false
hidden: false
last_post_at: 2012-05-19 19:54:21
state: "open"
views_count: 3
我得到的错误是 -未初始化的常量 Fixtures
我的seeds.rb 和fixture 有什么问题?或者我应该使用迁移?