0

ユーザーが 3 つの異なるエントリに投票できる投票ソフトウェアを開発しています。投票モデルについては、次のようなことを考えていました。

投票:
電子メール アドレス - 文字列
検証コード - 文字列
検証済み - ブール値
1 番目 - エントリ
2 番目 - エントリ
3 番目 - エントリ

Entry は私の Rails アプリケーションの別のモデルです。このために所属する関係をどのように持つことができますか? 1位の投票数が最も多いエントリを取得するようなクエリを実行したいので。これは、この問題に対する最善のアプローチですか?

4

2 に答える 2

1

ユーザー モデル:

has_many :votes, :dependent => :destroy
has_many :entries, :through => :votes

エントリーモデル

has_many :votes, :dependent => :destroy
has_many :users, :through => :votes

投票モデル

belongs_to :user
belongs_to :entry
于 2013-02-16T05:04:16.700 に答える
0

user_id と entry_id だけが含まれるように Vote オブジェクトを設計します。次に、アプリケーション ロジックで、既に 3 回投票した場合は再度投票できないように強制します。そうすれば、最大投票数を照会するときに、1 番目、2 番目、3 番目のエントリの特別なケースを記述する必要はありません。

belongs_to 宣言に関しては、投票は User と Entry の両方に属し、いずれかの依存オブジェクトが破棄されたときに破棄する必要があると言えます。したがって、次のようになります。

class Vote < ActiveRecord::Base
    belongs_to :user, :dependent => :destroy
    belongs_to :entry, :dependent => :destroy
end
于 2013-02-15T23:48:43.703 に答える