【问题标题】:Ruby on Rails - Order objects by field of a has_many relationRuby on Rails - 按 has_many 关系的字段排序对象
【发布时间】:2015-08-08 09:52:39
【问题描述】:

我是 Rails 初学者。

如何加载具有以下条件的数据库。

我想显示按 comment.created_at DESC 排序的讲座列表

schema.rb

  create_table "comments", force: :cascade do |t|
    t.text     "content"
    t.integer  "user_id"
    t.integer  "lecture_id"
    t.datetime "created_at",             null: false
    t.datetime "updated_at",             null: false
    t.integer  "likedcount", default: 0
  end

  create_table "lectures", force: :cascade do |t|
    t.string   "subject"
    t.string   "professor"
    t.string   "major"
    t.datetime "created_at",             null: false
    t.datetime "updated_at",             null: false
    t.integer  "uptachi",    default: 0
    t.integer  "hatachi",    default: 0
  end

讲座.rb

has_many :comments

comment.rb

belongs_to: lectures

【问题讨论】:

  • 你的问题的标题根本不清楚,“按has_many关系的字段排序对象”怎么样(当然还有更好的可能性,但一切都比“rails howto”好) .

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord


【解决方案1】:

你需要写成:

has_many :comments, -> { order("comments.created_at DESC") }

根据 OP 的评论,他想要的是一个命名范围。喜欢,

scope :order_by_comments, -> { joins(:comments).order("comments.created_at DESC") }

【讨论】:

  • @lectures=Lecture.paginate(:page => params[:page], :per_page => 10)
  • @Jung_digit 变化将如何到来。您没有调用执行订单的方法,
  • @Jung_digit 你叫它像@lectures=Lecture.order_by_comments.paginate(:page => params[:page], :per_page => 10)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
相关资源
最近更新 更多