acts_as_rateable
プラグインを使用しているレールアプリケーションがあります。acts_as_rateableで未評価モデルを見つける方法
このプラグインを使用して評価されていないモデルを取得する方法はわかりませんが、これはこのプラグインに固有のものよりも一般的なrails/SQLの質問です。 rateableとして
行為スキーマに以下を追加します。
create_table "ratings", :force => true do |t|
t.integer "rating", :default => 0
t.string "rateable_type", :limit => 15, :default => "", :null => false
t.integer "rateable_id", :default => 0, :null => false
t.integer "user_id", :default => 0, :null => false
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "ratings", ["user_id"], :name => "fk_ratings_user"
そして、私の定格モデルは、ユーザーID列を持っています。
評価されていない特定のモデルのすべてのインスタンスと、モデルの作成者以外の誰かによって評価されていないすべてのインスタンスを取得できるようにしたいとします。ここで一つのモデルである:
class Review < ActiveRecord::Base
acts_as_rateable
belongs_to :user
...
end
私はそのSQLを生成するために、これを行うためのSQL、またレールの魔法を把握することはできませんしかし、だから私は、次の擬似コード
Review.find(:all, :conditions=>"not rated by anyone")
Review.find(:all, :conditions=>"not rated by anyone except review.user")
ような何かをしたいです: - )
更新:このクエリは、モデルを所有するユーザー以外の誰かによって評価されたすべてのモデルを検索しているようです。だから私はこれを何とか逆にする必要があると思う。
Review.find(:all,
:joins=>'left join ratings on reviews.id=ratings.rateable_id && ratings.rateable_type="Review"',
:conditions=>'reviews.user_id <> ratings.user_id',
:group=>'reviews.id')
はレートがありませんモデルは、ゼロの評価を持っていますか? –
これは可能です。少なくとも、レールインターフェイス(Review.find(1))を使用しているときはそうです。評価== 0そのモデルの評価がない場合は – frankodwyer