0

我有一个名为 User 的模型:

has_one :etho

还有一个名为 Etho 的模型:

belongs_to :user

我在 User 中的 create 方法上有一个构建:

@user.build_etho

出于某种原因,当我登录时,我仍然能够创建超过 1 种精神!一个用户应该只有 1 种精神,并且不能创造超过 1 种精神!为什么这不起作用?

4

2 回答 2

2

根据文档,我认为您误解了 build_etho 的作用

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

“build_association(attributes = {}) 返回关联类型的新对象,该对象已用属性实例化并通过外键链接到该对象,但尚未保存。”

也就是说,每次调用 build_etho 时,都会创建一个新的 Etho 对象(构建,即尚未保存在数据库中) - 用户将始终链接到一个确切的对象,可能是最后创建的,但调用 build_etho 并不能保证只有一个是从您的用户对象创建的!

你到底想做什么?

于 2012-07-23T21:07:10.720 回答
0

您的参考id列应该在您的users表格中,您能确认一下吗?

这意味着在您的用户迁移中,您应该拥有

t.references :ethos
于 2012-07-23T20:52:54.847 回答