我有一个Post
,Reply
和一个Vote
模型(多态):
create_table "posts", :force => true do |t|
t.text "content", :limit => 255
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "title"
t.integer "replies_count", :default => 0, :null => false
t.integer "category_id"
end
create_table "replies", :force => true do |t|
t.text "content"
t.integer "post_id"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "votes", :force => true do |t|
t.integer "votable_id"
t.string "votable_type"
t.integer "user_id"
t.integer "polarity"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
我需要total_votes
帖子和回复,所以我创建了一个实例方法:
post.rb 和 reply.rb:
def total_votes
self.votes.map {|v| v.polarity }.sum
end
所以我可以用它来对帖子和回复进行排序:
主页:
default_order = "created_at DESC"
params[:order_by] ||= default_order
@feed_items = @post.replies.paginate(page: params[:page],
per_page: 10).order(params[:order_by])
所以现在,我不太确定order_by
在视图中添加了什么:
<span><%= link_to 'total_votes DESC', root_path(order_by: HERE) %></span>
我试过&:total_votes DESC
但total_votes DESC
没有奏效。
这样做的正确方法是什么?(我认为向和表中添加total_votes
列有点不必要,但不确定这是否对性能更好?)posts
replies