[英]Issue with Rails Polymorphic Association
我正在尝试为用户创建一个应用,以创建他们拥有或希望购买的手表的列表。 我希望用户能够描述有关其手表的许多细节/属性。 我正在尝试创建父/子关联,但不使用STI,因为子模型具有不同的数据,并且我不希望表中出现一堆空值。
我有4张桌子:
楷模
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作为数据库。
我认为您不希望在MechanicalWatch
或QuartzWatch
上继承。 它们似乎是与Watch
不同的表。 您显示的关系是MechanicalWatch
“具有” Watch
,而不是MechanicalWatch
“具有” Watch
。
你会改变
class MechanicalWatch < Watch
至
class MechanicalWatch
据我了解,您希望能够创建一个Mechanical_watch实例,但仍然能够在watch模型上设置字段。
即MechanicalWatch.new.field_on_watch = 4
如果正确,那么您可以看一下:
http://api.rubyonrails.org/classes/Module.html
您寻找的模式是委托。
不过,有一个重要问题要问:您打算以多态方式使用手表吗? 即可以在同一页面上显示所有类型的手表吗? 还是会分开显示不同的手表?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.