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