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