我是鲁比·努比。
在为我的数据库设定种子时,Haiku -> belongs_to -> User的关联没有通过Mongoid正确地保持。Haiku不能正确地在Mongo中存储user_id。
不起作用
#seeds.rb
1.upto(100) do
user = User.create! name: 'foo'
haiku = Haiku.create! content: 'hello world', user: user
user.add_point({point_type: :tweet, value: 1, haiku: haiku})
end能行吗?
1.upto(100) do
user = User.create! name: 'foo'
haiku = Haiku.new content: 'hello world'
haiku.user = user
haiku.save!
user.add_point({point_type: :tweet, value: 1, haiku: haiku})
end在深入研究源代码之后,我只能假设process_attributes没有正确设置关系。
为什么它在前面的部分不起作用,但在后面的部分起作用?
发布于 2012-10-23 14:49:06
批量分配正在尝试设置用户,这应该会起作用。
这不管用。
原因是没有为用户引用调用attr_accessible。此宏需要用于字段和引用。
发布于 2012-10-22 16:53:56
尝试此直通关联
1.upto(100) do
user = User.create! name: 'foo'
haiku = user.haiku.create! content: 'hello world'
user.add_point({point_type: :tweet, value: 1, haiku: haiku})
end假设您的所有验证和回调都已成功通过,上述方法应该可以正常工作
顺便说一句,要确保代码的第一部分正常工作
确保去做
user.id.to_s
因此,第一部分代码应该如下所示
1.upto(100) do
user = User.create! name: 'foo'
haiku = Haiku.create! content: 'hello world', user_id: user.id.to_s
user.add_point({point_type: :tweet, value: 1, haiku: haiku})
enduser.id.to_s将为您提供bson散列,而user.id将在内部为您提供的散列创建一个BSON对象mongoid。
发布于 2012-10-21 19:55:12
通常应该使用rake任务将示例数据发布到数据库。种子是应用程序运行所需的初始数据。
但是,我会这样做:
1.upto(100) do
user = User.create! name: 'foo'
haiku = Haiku.create! content: 'hello world', user_id: user.id
user.add_point({point_type: :tweet, value: 1, haiku: haiku})
endhttps://stackoverflow.com/questions/12996487
复制相似问题