我对Rails很陌生,所以这个问题可能有点奇怪。。。我正在构建一个系统,在这个系统中,我希望Users
能够将Feedback
留给其他用户,也可以留给他们从他们那里购买的Item
。想想易趣的反馈,他们会问:你对商品满意吗和你会建议和乔一起工作吗
反馈模型具有明显的多态性,因为它可以是User
或Item
类型
我拥有的是:
class User
has_many :feedbacks, as: :feedbackable
end
class Item
has_many :feedbacks, as: :feedbackable
end
class Feedback
belongs_to :feedbackable, polymorphic: true
end
我遇到的问题是,用户是反馈的创造者,但也是相同反馈的接收者(可反馈)。。。
我如何实现这样的目标:
class User
has_many :feedbacks # feedback.user
has_many :feedbacks, as: :feedbackable #feedback.feedbackable.type_id
end
从某种意义上说,我可以获得用户A留给其他用户和项目的所有反馈,以及其他用户留下的关于用户A 的所有反馈
我不确定回答自己问题的政治性,但我会把这个答案留给任何有同样疑问的人。。。
对于那些开始阅读STI或多对多:通过等的人来说,实现这一点似乎要容易得多。
我最终在用户模型中做了以下操作:
has_many :feedbacks
has_many :feedbacks_received, as: :feedbackable, :class_name => "Feedback"
现在我可以做:
user.feedbacks
并获取该用户创建的所有反馈(在项目或用户上)
和
user.feedbacks_received
并获取其他用户留下的关于该用户的所有反馈