1

Rails 3 で「課題トラッカー」アプリを開発していますが、「課題」とその「ステータス」の関係を説明するのに苦労しています。各課題は 1 つのステータスしか持てません。これを HTML のコンボ ボックスにしたいのですが、明らかに各ステータスを複数の課題に割り当てることができます。「課題には 1 つのステータスがあります」から始めましたが、ビューでそのステータスを取得する際に問題が発生しました。これは正しいと思いますが、何か他のものが必要なはずです...

4

3 に答える 3

2

この場合、問題は特定のステータスに属します。

class Issue
  belongs_to :status
end

ステータスは、各問題が属するカテゴリの一種と考えてください。

于 2011-06-29T22:05:30.090 に答える
1

カスタム ステータスを許可しない場合は、すべてのステータスを定数配列 (選択に使用) およびstatus課題の文字列フィールドとして使用する方が理にかなっています。スコープ付きのステータスを持つすべての問題を一覧表示することは引き続き可能です。

質問の更新

class Issue
    STATUSES = [ "Open", "Closed" ]

    scope :with_status, lambda { |status| where(:status => [*status]) }
end

ビューで、

<%= f.select :status, Issue::STATUSES %>

データベースにフィールドが必要です。したがって、移行では:

add_column :issues, :status, :string

コントローラでステータスの問題を見つけるには:

@open_issues = Issue.with_status("Open").all;
@current_issues = Issue.with_status([ "Pending", "Waiting on Review"]).all;

または関連付けを使用:

@closed_issues = @project.issues.with_status("Closed");
于 2011-06-29T22:04:51.127 に答える
1

Issue belongs_to :status代わりにandを使用する必要がありStatus has_many :issuesます。

関連付けを使用すると、Rails はテーブル内でhas_one外部キーを探します。これはあなたが望むものではありません。課題がステータスを指すようにする必要があります。その逆ではありません。issue_idstatuses

于 2011-06-29T22:06:36.510 に答える