Ruby on rails rakedb:seed插入空值而不是值

Ruby on rails rakedb:seed插入空值而不是值,ruby-on-rails,ruby,sqlite,sqlite3-ruby,Ruby On Rails,Ruby,Sqlite,Sqlite3 Ruby,我正在使用Ruby 2.1.5和Rails 4.2.1,我试图通过seeds.rb将一些静态数据库条目放入sqlite3表中。当我运行rakedb:seed时,我得到了插入了适当时间戳列的正确行数,但是实际的数据列name没有被填充。名称正在循环内部打印出来 db/seed.rb for g in ['Harmony', 'Melody', 'Technique', 'Soloing'] Group.create(name: g) put(g) end app/models/g

我正在使用Ruby 2.1.5和Rails 4.2.1,我试图通过seeds.rb将一些静态数据库条目放入sqlite3表中。当我运行rakedb:seed时,我得到了插入了适当时间戳列的正确行数,但是实际的数据列name没有被填充。名称正在循环内部打印出来

db/seed.rb

for g in ['Harmony', 'Melody', 'Technique', 'Soloing']
    Group.create(name: g)
    put(g)
end
app/models/group.rb:

class Group < ActiveRecord::Base
    attr_accessor :name
    has_many :group2exercise
    has_many :exercises, through :group2exercise
end

如果你拆下这条线,它应该能工作

attr_accessor :name

通过使用
attr\u访问器
,将创建一组新的getter和setter方法,在这种情况下,将覆盖Rails提供的方法。

也许您正在考虑
attribute\u accessible
?在Rails 4中,它已经被弃用了。我已经找到了一个解决方案,但我会回去尝试建议的解决方案。我认为问题出在许多声明中。我返回并使用“rails g scaffold groups name:string”、“rails g scaffold group2exercise group:integer exercise:integer”设置了模型,但我没有编辑模型。您的“rails g”语句有一些错误。如果你怀疑问题的原因是多方面的,请将其删除,然后再试一次。当然,一旦解决了最初的问题,我就不假思索地删除了这个糟糕的项目。从我现在正在工作的项目中倒退,我相信你是对的。attr\u访问器和has\u many,through语句都会导致它中断。另一个有很多是可以的,尽管它可能不完整。更基本的是,我使用了它,这是不同类型的关联的一个很好的资源。我唯一的抱怨是Ruby食谱给出了更坚定的建议,如果你使用has_one,你可能应该合并你的桌子。尽管如此,本页并没有为新手提供必要的上下文,以了解要使用哪些脚手架命令,是否需要将语句放入迁移脚本中以强制执行外键关系等。如果您知道一个简单的教程或演示项目,演示如何设置多对多关系,我将不胜感激。
attr_accessor :name