0

要件:
私は、Twitter と同じようにユーザーが 140 文字以内のサービスを介してフィードバックを共有できる、地元のキャンパス用の twitter のような Web アプリケーションを作成しています。

すべてのフィードバックに対して、フィードバックに対する複数の応答が存在する可能性があります。これらの応答は 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 への応答です]

私の質問 ここでは、多対 1 の関係を持つ自己参照マッピングが必要であることを理解しています。ただし、フィードバックの作成に使用されるのと同じビューから応答の作成を進める方法については明確ではありません。次に、応答はシステムへの別のフィードバックであるため、応答が作成され、その ID が生成されない限り、Feedback_Responses テーブルに必要なマッピングが入力されません。したがって、この場合、私は本当に無知であり、応答を作成して別のテーブルでそれらのマッピングを管理する方法について混乱している可能性があります. このアプリでRailsを学び始めています。

4

2 に答える 2

0

あなたのデザインはよくわかりませんが、あなたの主要なエンティティ(ツイートに相当)は「フィードバック」であり、各「フィードバック」には多くの「応答」(コメントなど)が含まれているようです。「応答」がそれ自体で「フィードバック」になり得るかどうかは私にはわかりませんが、今のところ、そうではないと思います。したがって、この説明によると、フィードバックには多くの応答があるという設計になっています。「feedback_responses」テーブルは、応答が1つだけのフィードバックに接続されているように聞こえるので、この問題には関係がないことがわかりました。だから、テーブルをドロップします。

だから、私はそれを次のように書くでしょう:

# 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

2つの識別可能なモデルがある限り、ビューの生成は自動的に簡単になります。

于 2013-01-25T08:43:01.567 に答える
0
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-25T07:30:04.990 に答える