我有一个名为 User 的模型:
has_one :etho
还有一个名为 Etho 的模型:
belongs_to :user
我在 User 中的 create 方法上有一个构建:
@user.build_etho
出于某种原因,当我登录时,我仍然能够创建超过 1 种精神!一个用户应该只有 1 种精神,并且不能创造超过 1 种精神!为什么这不起作用?
我有一个名为 User 的模型:
has_one :etho
还有一个名为 Etho 的模型:
belongs_to :user
我在 User 中的 create 方法上有一个构建:
@user.build_etho
出于某种原因,当我登录时,我仍然能够创建超过 1 种精神!一个用户应该只有 1 种精神,并且不能创造超过 1 种精神!为什么这不起作用?
根据文档,我认为您误解了 build_etho 的作用
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
“build_association(attributes = {}) 返回关联类型的新对象,该对象已用属性实例化并通过外键链接到该对象,但尚未保存。”
也就是说,每次调用 build_etho 时,都会创建一个新的 Etho 对象(构建,即尚未保存在数据库中) - 用户将始终链接到一个确切的对象,可能是最后创建的,但调用 build_etho 并不能保证只有一个是从您的用户对象创建的!
你到底想做什么?
您的参考id
列应该在您的users
表格中,您能确认一下吗?
这意味着在您的用户迁移中,您应该拥有
t.references :ethos