首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助在Rails中具有自引用和多到一个映射的活动记录关联

需要帮助在Rails中具有自引用和多到一个映射的活动记录关联
EN

Stack Overflow用户
提问于 2013-01-25 07:11:23
回答 2查看 112关注 0票数 0

要求:

我正在为本地校园创建一个类似twitter的web应用程序,用户可以在140个字符内分享他们的反馈信息,就像twitter一样。

对于每一个反馈,可以有多个对反馈的响应。这些回复与twitter回复类似,twitter回复也是140个字符的回复,就像推特一样。

本质上,输入反馈或响应的屏幕与相同的功能元素是相同的。

例如:-

这是一个演示反馈-用户1。 这是对反馈的回应-用户2

我正在使用rails进行开发,这就是我的反馈模型的样子

代码语言:javascript
复制
class Feedback < ActiveRecord::Base
  attr_accessible :title     

end

我在数据库中的表结构如下:-

反馈表

id,整数,主键 标题,varchar (255)

这就是我想要管理对反馈的反应。

一个名为"Feedback_Responses“的单独表具有以下结构:

feedback_id (int)这是一个父反馈id response_id (int)这是对父反馈id的响应

,我的问题,,我明白,在这里需要自我引用映射,需要多到一个关系。但是,我不清楚如何从同一个视图创建响应,该响应用于创建反馈。其次,响应是对系统的另一个反馈,因此除非创建响应并生成其id,否则Feedback_Responses表将不会填充所需的映射。因此,在这种情况下,对于如何在单独的表上创建响应和管理它们的映射,我真的一无所知,而且可能很困惑。我开始用这个应用程序学习rails。

EN

回答 2

Stack Overflow用户

发布于 2013-01-25 07:30:04

代码语言:javascript
复制
class Feedback < ActiveRecord::Base
  attr_accessible :title 
  validates :title, :length => { :maximum => 140 }
  has_many_and_belong_to :responses   
end

class Response < ActiveRecord::Base
  has_many_and_belong_to :feedbacks      
end

要从反馈对象获取响应,请使用@feedback.responses,对于响应对象@response.feedbacks,这种关系很容易维护。如果你需要的话,你可以添加中间的桌子。

票数 0
EN

Stack Overflow用户

发布于 2013-01-25 08:43:01

我不太理解你的设计,但看起来你的主要实体(相当于一条推特)是“反馈”,每个“反馈”都可以有很多“回应”(比如评论)。对我来说还不清楚的是,“回应”本身是否可以是“反馈”,但我认为目前还不是。所以,你的设计说,根据这个描述,反馈有很多反应。我发现"feedback_responses“表与这件事无关,因为它听起来像是一个回复与一个且只有一个反馈相关联。把桌子放下。

所以,我会这样写:

代码语言:javascript
复制
# table feedbacks
# id: Integer
# title: Varchar 140
class Feedback < ActiveRecord::Base
  has_many :responses
end

# table responses
# id: Integer
# feedback_id: Integer
class Response < ActiveRecord::Base
  belongs_to :feedback
end

不过,如果您想要处理响应有一个反馈而不是对另一个反馈的响应,您可以使用继承作为解决方案:

代码语言:javascript
复制
# additionally feedback_id: Integer to the feebacks table
class Feedback < ActiveRecord::Base
  has_many :responses
end

class Response < Feedback
  belongs_to :feedback
end

只要您有两个可区分的模型,视图生成就会自动轻松。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14517060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档