Ruby on rails RoR top100照片

Ruby on rails RoR top100照片,ruby-on-rails,ruby,Ruby On Rails,Ruby,我必须通过访问、评论创建包含前100名照片的页面。。。但是我不知道怎么做。谁能帮帮我:) 错误: undefined method `Visit' for <Photo::ActiveRecord 路线 get 'photos/top100' 模式 create_table "visits", force: true do |t| t.integer "photo_id" t.integer "user_id" t.integer "count

我必须通过访问、评论创建包含前100名照片的页面。。。但是我不知道怎么做。谁能帮帮我:)

错误:

 undefined method `Visit' for <Photo::ActiveRecord
路线

 get 'photos/top100'  
模式

  create_table "visits", force: true do |t|
    t.integer  "photo_id"
    t.integer  "user_id"
    t.integer  "count",      default: 0
    t.datetime "created_at"
    t.datetime "updated_at"
  end

create_table "photos", force: true do |t|
    t.string   "name"
    t.text     "description"
    t.integer  "user_id"
    t.string   "image"
    t.string   "tags"
    t.string   "camera"
    t.string   "lens"
    t.hstore   "settings"
    t.integer  "im_rating",       default: 0
    t.integer  "im_visits",       default: 0
    t.integer  "im_votes",        default: 0
    t.boolean  "is_ban_comments", default: false
    t.datetime "created_at"
    t.datetime "updated_at"
  end
photo.rb

  has_many :visits, dependent: :destroy
visit.rb

    belongs_to :photo
    belongs_to :user

使用SQL分组和排序:

# Top photos by visits
@top_photos = Visit.select("photo_id, COUNT(*) AS visit_count").includes(:photo).group(:photo_id).order("visit_count DESC").map(&:photo)
有关SQL中按计数排序的详细信息:

请注意
#includes(:photo)
–这样,下面的
#map(&:photo)
调用将不会生成N个查询(只需一个查询即可获取所有查询)

此外,您似乎没有在模型中指定关系,因此将此行添加到
visit.rb

belongs_to :photo
这行代码指向
photo.rb

has_many :visits

除非你已经有了这些照片。

你希望这一行的照片得到什么
@photos.visit.count(限制:10)
?我理解你。。。但我不知道如何找到解决我的麻烦的最好方法。。。你能帮我吗?我必须通过访问或投票来展示排名前100名的照片…问题就在这里
.map(&:photo)
@Glupo现在你高兴了吗?你对我的回答是对的,@EugZol,我错过了
访问
中的
用户id
栏,这就是为什么它没有意义的原因,所以我假设…@RubyRacer是的,抱歉太讽刺了,我只是对无缘无故获得太多的反对票感到非常不安。但现在我没事了:为什么道歉?讽刺有什么不对吗?
has_many :visits