Rails Association Has_One 具有复数模型名称而不是单数且不工作
Posted
技术标签:
【中文标题】Rails Association Has_One 具有复数模型名称而不是单数且不工作【英文标题】:Rails Association Has_One Having Pluralisation Model Name Instead of Singular and not working 【发布时间】:2019-05-28 16:47:51 【问题描述】:我有一个名为 BigbluebuttonRoom 的模型。
class BigbluebuttonRoom < ActiveRecord::Base
has_one :room_options, :class_name => 'BigbluebuttonRoomOptions'
所以当我调用 room.room_options 时,不会出现任何方法错误。
【问题讨论】:
varroom
中有什么内容?如果它为零,那么你会得到无方法错误。没有完整的错误日志很难判断。
【参考方案1】:
为什么你用复数形式命名你的模型BigbluebuttonRoomOptions
?打破 Rails 惯例是个坏主意。模型名称应为单数形式,BigbluebuttonRoomOption
。更改它和相应的文件名。
另外,has_one
的约定也是单数形式。应该是:
has_one :room_option, :class_name => 'BigbluebuttonRoomOption'
【讨论】:
在某些情况下,您可能需要has_one
的复数形式,例如has_one :preferences, class: 'User::Preferences'
其中单个记录具有每个首选项的列。然后变成:user.preferences.something_enabled?
.以上是关于Rails Association Has_One 具有复数模型名称而不是单数且不工作的主要内容,如果未能解决你的问题,请参考以下文章
has_one 与用户和客户的关联以及 Rails 视图表单
Rails:在父模型的视图中创建一个 has_one 模型?
rails wicked gem has_one 关联和嵌套形式
Rails API 将 has_one: 图像从模型项推送到 Cloudinary 但不能