ActiveRecord:定义关联时,将类而不是字符串传递给class_name
在定义关联时,是否存在传递类而不是字符串的含义或陷阱?
belongs_to :owner, class_name: User
相反:
belongs_to :owner, class_name: "User"
该类可能尚未加载,在这种情况下,您将获得NameError: uninitialized constant User
。
因为这个原因,您应该使用"User"
,如选项名称:class_name
,not :class
所暗示的那样。
在极少数情况下,当使用类(User)而不是类名作为字符串(’User’)时,我会遇到一些随机错误。 我无法重现它们并通过重新启动应用服务器来解决这个问题。
它也可以是一个象征。 它不能是类常量,因为如果你有两个相关的模型,当第一个被加载时,第二个尚未定义,所以不会定义常量,这会产生错误。
资料来源: https : //github.com/rails/rails/issues/6486