tim*_*one 4 activerecord ruby-on-rails
我有这样一个简单的AR协会:
Question has_many :answers
Answer belongs_to :question
with
`question_id` int(11) NOT NULL,
`is_accepted` tinyint(1) DEFAULT NULL,
Run Code Online (Sandbox Code Playgroud)
在答案中.我只有一个is_accpeted答案,我想知道是否有一个容易排序到顶部(只是一个订单)?
谢谢
编辑:这是我的答案课:
class Answer < ActiveRecord::Base
belongs_to :question
end
Run Code Online (Sandbox Code Playgroud)
Mat*_*udy 16
答案在您的架构中
`is_accepted` tinyint(1)
Run Code Online (Sandbox Code Playgroud)
对于许多数据库,ActiveRecord存储布尔值true和falseas 1和0
所以
question = Question.find(23)
questions.answers.order("is_accepted DESC")
Run Code Online (Sandbox Code Playgroud)
应该做你想做的事.
您也可以将其添加为默认订单.
class Question
has_many :answers, :order => "is_accepted DESC" # rails 3
has_many :answers, -> { order "is_accepted DESC" } # rails 4
end
Run Code Online (Sandbox Code Playgroud)
现在question.answers将始终首先以"is_accepted"开头.
| 归档时间: |
|
| 查看次数: |
7982 次 |
| 最近记录: |