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