【发布时间】:2020-04-27 02:14:31
【问题描述】:
表格:(仅包括相关列)
- 用户:id
- 评论:id、user_id、reviewable_type、reviewable_id
- subject_ones:id
- subject_twos:id
模型:(这是我尝试过的)
class User < ApplicationRecord
has_many :reviews
end
class Review < ApplicationRecord
belongs_to :user
belongs_to :reviewable, polymorphic: true
scope :subject_one, -> { where(reviewable_type: SubjectOne.name) }
end
class Reviewable < ApplicationRecord
has_many :reviews, as: :reviewable
end
class SubjectOne < Reviewable
end
class SubjectTwo < Reviewable
end
subject_ones 和 subject_twos 中的行不会真正改变,用户可以选择包括每个行。这两个表差异很大,以至于它们需要不同的表,但评论本身的数据模型是相同的。对于不同的类型,对用户的显示也会有所不同。 reviews 在 user_id、reviewable_type 和 reviewable_id 上是唯一的
我希望最终结果是我可以做的事情 user.reviews.subject_one.first.reviewable 并返回第一个 subject_ones 记录。
基本上,我很难弄清楚如何从review 获得“可审查”。
现在如果拨打user.reviews.subject_one.first.reviewable我得到:
PG::UndefinedTable: ERROR: relation "reviewables" does not exist LINE 8: WHERE a.attrelid = '"reviewables"'::regclass ^
感谢您的帮助。
【问题讨论】:
标签: ruby-on-rails polymorphic-associations ruby-on-rails-6