属性class_name如何影响我的模型?

斩波器狮子4

在我的网络开发人员类中,我们得到了以下代码:

class User < ActiveRecord::Base
  has_many :shouts
  has_many :followed_user_relationships, class_name: "FollowingRelationship"
  has_many :followed_users, through: :followed_user_relationships

  def follow(other_user)
    followed_users << other_user
  end
end

我了解所有的内容,但class_name除外。它是否以某种方式将信息添加到模型关系中,还是只是使该关系成为该类名称的别名?我检查了文档,对于刚接触Rails的人来说似乎一文不值。

米加尔

Rails需要知道要为关联实例化的类。它通过根据关联名称进行猜测来做到这一点,但是只有在您的类和关联被可预测地命名时,它才能做到这一点。具体来说,它用于String#classify将关联名称转换为类名称。classify从下划线大小写转换为驼峰大小写,并将单词单数化:

"some_kind_of_records".classify => "SomeKindOfRecord"

在您的特定情况下,您的关联名称和类名称不是通过这种方式关联的。:followed_user_relationships会导致Rails查找名为的类FollowedUserRelationship,而不是正确的类FollowingRelationship

因为您已经稍微偏离了该约定,所以您必须显式地告诉Rails所涉及的类的名称。就是class_name这样。当Rails无法正确猜测时,它会告诉Rails要使用的类的名称。

考虑一个更简单的示例:

class User < ActiveRecord::Base

end

class Post < ActiveRecord::Base
  belongs_to :author, class_name: 'User'
end

如果我们写的只是,Rails怎么会知道aPost与a相关联Userbelongs_to :author

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

没有class_name的FactoryBot命名空间模型

在类型提示中使用Type [class_name]而不是class_name时,python无法解析的属性引用

无法腌制<class'abc.class_name'>:在abc上的属性查找class_name失败

外键class_name

带有 has_many、through、class_name 和 where 子句的 Rails 模型关联

Angular2和TypeScript错误“属性'typeof CLASS_NAME'上不存在属性METHOD_NAME

显示“ class_name的实例”而不是数据

如何将 class_name 传递给函数以在 Sqlalchemy Query 中使用

如何使用 Selenium by class_name 从大学橄榄球数据中抓取图像 url 列表

jQuery类选择器“ class_name”与“ .class_name”

为什么 .class_name:nth-child(even) 计算没有 .class_name 的元素

如何为关联has_many实现动态class_name?对于同一张表,不同的引擎

如何避免在“。”时重复“ from。import class_name”。实际上是指无效的标识符?

ruby-association 中的动态 class_name

将class_name转换为活动记录迁移

所属名为的工厂女:class_name

Python-export_graphviz class_name类型错误

“ [Class_Name]必须存在” rails 5 rspec测试关联

Python Pywinauto基于某些class_name的存在检测窗口

续集:模型定义中“独特”属性的影响

一个类被传递给`:class_name`,但是我们期望一个字符串

我应该如何从关联模型访问虚拟属性?

如何修改我的视图模型以仅检查特定属性的验证?

如何在我的视图中从模型访问属性

如何将DateTime属性绑定到我的视图模型?

是否未定义对class_name <template_argument> function_name(变量)的引用?

ArgumentError:未知键::conditions。有效键为::class_name,:class,:foreign_key

如何查看NEST.SearchRequest.Type属性对我的ElasticSearch查询的影响

如何获得模型属性的属性?