お世話になります。
フォーラム内、各トピック内の返答部分は、個人設定の如何にかかわらず
古いものから順番に表示されますが、これを個人設定に依存させたく試行錯誤しております。
常に新着順にする場合は app/controllers/messages_controller.rb を
@replies = @topic.children.
includes(:author, :attachments, {:board => :project}).
- reorder("#{Message.table_name}.created_on ASC, #{Message.table_name}.id ASC").
+ reorder("#{Message.table_name}.created_on DESC, #{Message.table_name}.id DESC").
limit(@reply_pages.per_page).
offset(@reply_pages.offset).
to_a
のように修正すればよさそうですが、
ここで個人設定の情報を引っ張ってきたいです。
探した所 User.current.wants_comments_in_reverse_order という定義を見つけましたので
分からないなりに app/controllers/messages_controller.rb を以下のように改造してみました。
if User.current.wants_comments_in_reverse_order?
@replies = @topic.children.
includes(:author, :attachments, {:board => :project}).
reorder("#{Message.table_name}.created_on DESC, #{Message.table_name}.id DESC").
limit(@reply_pages.per_page).
offset(@reply_pages.offset).
to_a
else
@replies = @topic.children.
includes(:author, :attachments, {:board => :project}).
reorder("#{Message.table_name}.created_on ASC, #{Message.table_name}.id ASC").
limit(@reply_pages.per_page).
offset(@reply_pages.offset).
to_a
end
こう書くと動いているように見えますが、プログラム側はなんか冗長と言うか、ダサいです。
どう改造するのが良いでしょうか?