要求:
我正在为本地校园创建一个类似twitter的web应用程序,用户可以在140个字符内分享他们的反馈信息,就像twitter一样。
对于每一个反馈,可以有多个对反馈的响应。这些回复与twitter回复类似,twitter回复也是140个字符的回复,就像推特一样。
本质上,输入反馈或响应的屏幕与相同的功能元素是相同的。
例如:-
这是一个演示反馈-用户1。 这是对反馈的回应-用户2
我正在使用rails进行开发,这就是我的反馈模型的样子
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。
发布于 2013-01-25 07:30:04
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,这种关系很容易维护。如果你需要的话,你可以添加中间的桌子。
发布于 2013-01-25 08:43:01
我不太理解你的设计,但看起来你的主要实体(相当于一条推特)是“反馈”,每个“反馈”都可以有很多“回应”(比如评论)。对我来说还不清楚的是,“回应”本身是否可以是“反馈”,但我认为目前还不是。所以,你的设计说,根据这个描述,反馈有很多反应。我发现"feedback_responses“表与这件事无关,因为它听起来像是一个回复与一个且只有一个反馈相关联。把桌子放下。
所以,我会这样写:
# 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不过,如果您想要处理响应有一个反馈而不是对另一个反馈的响应,您可以使用继承作为解决方案:
# additionally feedback_id: Integer to the feebacks table
class Feedback < ActiveRecord::Base
has_many :responses
end
class Response < Feedback
belongs_to :feedback
end只要您有两个可区分的模型,视图生成就会自动轻松。
https://stackoverflow.com/questions/14517060
复制相似问题