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