【发布时间】:2016-08-16 01:28:38
【问题描述】:
我正在尝试为用户创建一个应用,以创建他们拥有或希望购买的手表列表。我希望用户能够描述他们手表的很多细节/属性。我正在尝试创建父/子关联,但不使用 STI,因为子模型具有不同的数据,并且我不希望表中有一堆空值。
我有 4 张桌子:
- 用户
- 一些用户属性
- 手表
- user_id
- 所有手表、名称、品牌等共有的一系列属性。
- content_id
- content_type
- mechanical_watches
- 一些仅适用于机械表的属性
- 石英表
- 一些仅适用于石英表的属性
模型
class User < ApplicationRecord
include Clearance::User
has_many :watches
end
class Watch < ApplicationRecord
belongs_to :user
belongs_to :content, polymorphic: true
end
class MechanicalWatch < Watch
has_one :watch, as: :content
end
class QuartzWatch < Watch
has_one :watch, as: :content
end
我不能 100% 确定我是否正确设置了关联。但我遇到的问题是,当我将 MechanicalWatch 输入控制台时,它只返回 Watch 上的属性,而不是mechanical_watches 表中的任何属性。我已经尝试了我能想到的一切。关于我做错了什么的任何想法。
我正在为数据库使用 Rails 5、Ruby 2.3.1 和 Postgres。
【问题讨论】:
标签: ruby-on-rails model polymorphic-associations