Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 具有自引用的Rails4多态性_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 具有自引用的Rails4多态性

Ruby on rails 4 具有自引用的Rails4多态性,ruby-on-rails-4,Ruby On Rails 4,我对Rails很陌生,所以这个问题可能有点奇怪。。。我正在构建一个系统,希望用户能够就其他用户以及他们从他们那里购买的物品留下反馈。想想eBay的反馈,他们会问:您对该商品满意吗?你会推荐和乔一起工作吗 反馈模型显然是多态的,因为它可以是用户或项目 我得到的是: class User has_many :feedbacks, as: :feedbackable end class Item has_many :feedbacks, as: :feedbackable end

我对Rails很陌生,所以这个问题可能有点奇怪。。。我正在构建一个系统,希望
用户
能够就其他用户以及他们从他们那里购买的
物品
留下
反馈。想想eBay的反馈,他们会问:您对该商品满意吗?你会推荐和乔一起工作吗

反馈模型显然是多态的,因为它可以是
用户
项目

我得到的是:

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\u已收到
并获取其他用户关于此用户的所有反馈