我有一个应用程序,是活在Heroku/Github上,但最近完全从头开始重建它 - 我想保留旧的存储库名称,什么是新的代码替换现场代码的最佳方式是什么?
背景:我有一组可以投票的帖子.我想根据他们的"投票得分"对帖子进行排序,这可以通过以下公式确定:
((@ post.votes.count)/((Time.now - @ post.created_at)**1))
我目前正在定义投票得分:
def vote_score(x)
( (x.votes.count) / ( (Time.now - x.created_at) ** 1 ) )
end
Run Code Online (Sandbox Code Playgroud)
并将它们排序为:
@posts = @posts.sort! { |a,b| vote_score((b) <=> vote_score((a) }
Run Code Online (Sandbox Code Playgroud)
目标:此方法对我的应用程序加载时间造成巨大损失.有没有更好,更有效的方法来完成这种排序?
背景:我有帖子和用户,都有很多社区.
目标:对于任何给定的用户,我想返回一组帖子,按照帖子与用户共有的社区数量排序(更多社区的帖子更高)
我当前的尝试(使用排序方法)有效:
Post.includes(:community_posts).where(community_posts: { community_id: current_user.community_ids }).sort{ |x,y| (y.community_ids & current_user.community_ids).length <=> (x.community_ids & current_user.community_ids).length }
Run Code Online (Sandbox Code Playgroud)
但有没有更好/更有效的方法来做到这一点?
sorting activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-4
我通过跟踪和错误注意到
UserMailer.newsletter(@user, @posts).deliver unless @posts.blank?
Run Code Online (Sandbox Code Playgroud)
无论 @post 的值如何,都会发送电子邮件,而
UserMailer.newsletter(@user, @posts).deliver! unless @posts.blank?
Run Code Online (Sandbox Code Playgroud)
如果@posts 为空,(使用deliver! 与deliver)将不会正确发送电子邮件?
为什么是这样?我知道送!如果无法发送,则会抛出异常,但交付不应该也监听条件吗?
我有一个非常简单的Ruby问题.有没有办法重构这个:
<%= some_array.length if some_array.length > 1 %>
Run Code Online (Sandbox Code Playgroud)
变成类似的东西
<%= some_array.length if self > 1 %>
Run Code Online (Sandbox Code Playgroud)
其中'self'(例如)引用最初计算的值 - 即some_array.length?