用Rails评分(many_to_many)

时间:2016-06-17 05:28:34

标签: ruby-on-rails ruby

我试图在我的应用中建立一个评级系统,目前仍然停留在协会和指数上。我对此很陌生,所以我需要得到所有帮助......

用户模型

class User < ActiveRecord::Base
  has_many :demos
  has_many :ratings
  has_many :reviewed, through: :ratings, source: :reviewed'Demo'

这是它的一部分。

演示模型

class Demo < ActiveRecord::Base
  belongs_to :user
  belongs_to :subject
  has_many :ratings
  has_many :reviewers, through: :ratings, source: :reviewer

主题无关紧要。

评分模型

class Rating < ActiveRecord::Base
  belongs_to :reviewed
  belongs_to :reviewer
  validates :rating, presence: true, numericality: { :greater_than_or_equal_to => 0, :less_than_or_equal_to => 5}

端     端

现在你可以告诉我,我不确定自己在做什么。

评级迁移表

class CreateRatings < ActiveRecord::Migration
  def change
    create_table :ratings do |t|
      t.float :rating, default: 2.5     
      t.belongs_to :reviewed, index: true
      t.belongs_to :reviewer, index: true
      t.timestamps null: false
    end
  end
end

演示迁移表

class CreateDemos < ActiveRecord::Migration
  def change
    create_table :demos do |t|
      t.references :user, index: true
      t.references :subject, index: true
      t.string :name
      t.text :content
      t.string :materials
      t.timestamps null: false
    end
    add_index :demos, [:user_id, :subject_id, :created_at]
  end
end

我还没有为评级构建控制器,因为我只是使用沙盒控制台测试关系。

我已成功创建了评分,但@ user.reviewed和@ user.ratings在Active Record中返回一个空白数组,即使@rating有所有演示和用户ID。

0 个答案:

没有答案