Tag: 排序

Datamapper:通过关联对结果进行排序

我正在开发一个使用Datamapper作为其ORM的Rails 3.2应用程序。 我正在寻找一种通过关联模型的属性对结果集进行排序的方法。 具体来说我有以下型号: class Vehicle include DataMapper::Resource belongs_to :user end class User include DataMapper::Resource has n, :vehicles end 现在我希望能够查询车辆并按驱动程序的名称对它们进行排序。 我尝试了以下但似乎没有使用Datamapper: > Vehicle.all( :order => ‘users.name’ ) ArgumentError: +options[:order]+ entry “users.name” does not map to a property in Vehicle > Vehicle.all( :order => { :users => ‘name’ } ) ArgumentError: +options[:order]+ entry [:users, “name”] of […]

如何对计算值进行排序?

我目前正在建立一个NFL pick’em联赛网站。 我有一个用户模型,一个游戏模型和一个连接表,用于捕获每个用户的个人选择。 游戏模型具有“结果”属性,其由“W”表示获胜,“L”表示丢失,“P”表示推(领带)。 我正在讨论建立排名页面的问题。 我目前在我的Users模型中有两种方法: def correct_games self.games.where(result: “W”).count end def total_games self.games.where(‘result != ?’, “P”).count end correct_games方法计算用户的选择是否正确。 total_games方法计算总游戏数(不计算导致推送的游戏)。 然后在我看来,我目前为每个用户: 这个部门给了我那个用户的胜率(#correct / total picks)。 对于我的排名表,我显然希望获胜百分比的降序。 问题是排序的唯一解决方案似乎是使用.order方法,该方法通常需要一些属性已经存在于数据库中,然后您可以在控制器中调用它。 我也尝试将这个胜利百分比属性添加到数据库中,但我似乎无法找到一个回调,它会在游戏结果更新时更新用户的分数。 在视图中计算的属性或者将此胜利百分比添加到用户模型的任何解决方案? 提前致谢!

按两个字段排序,一个是created_at,在Rails中

这是Rails 3中自定义,高效,复杂排序的后续问题 我想开发一种有效的轨道模型订购方法。 假设我在名为“popular”的字段中保存所有对象的评级。 如果我想按此评级排序,我会这样做: Model.order(‘popularity ASC’) 如何通过创建的偏斜来命令? 是否有办法将创建时间戳转换为整数值,然后按流行度排序 – created_at,以便旧对象的评级随着时间的推移而降低? IE之类的东西: Model.order(‘popularity-integerize(created_at) ASC’) 那么:我怎么能这样做,它是否有效?

基于排序值数组对哈希数组进行排序

我有一系列哈希,如下所示: user_quizzes = [{:id => 3897, :quiz_id => 1793, :user_id => 252}, {:id => 3897, :quiz_id => 1793, :user_id => 475}, {:id => 3897, :quiz_id => 1793, :user_id => 880}, {:id => 3897, :quiz_id => 1793, :user_id => 881}, {:id => 3897, :quiz_id => 1793, :user_id => 882}, {:id => 3897, :quiz_id => 1793, :user_id […]

由attr_accessor订购模型对象

当我必须对对象列表进行排序时,我认为attr_accessor与另一个具有相同的行为,但似乎有所不同: dataRecords = MyData.where(“day = ?”, Time.now.yesterday.strftime(“%Y%m%d”).to_i) dataRecords.each do |data| data.accessor_var = func(data.x, data.y) end @sortedData = dataRecords.order(‘accessor_var DESC’) 但@sortedData没有排​​序……

给出另一个散列的散列,包括有关order方法的信息

我正在使用Ruby on Rails 3.0.7,我想通过返回排序array甚至是新排序的hash考虑预设顺序对hash进行排序。 也就是说,给定以下hash ,例如HASH1(我认为它的值表示从1到4的顺序方法) { :dog => 3, :cat => 2, :pig => 4, :frog => 1 } 我想通过考虑HASH1值中给出的顺序,按键来解释另一个hash ,比如HASH2 { :cat => ‘cat_value’, :dog => ‘dog_value’, :frog => ‘frog_value’, :pig => ‘pig_value’ } 所以,在上面的例子中,我应该输出如下的输出\有序hash : { :frog => ‘frog_value’, # Order indicated by ‘:frog => 1’ in the HASH1 :cat => ‘cat_value’, […]

将索引中的meta_search gem与现有的地理编码器gem搜索(rails)集成

我已经使用地理编码器实现了基于位置的搜索,并且无法集成meta_search gem。 我正在尝试将meta_search集成到我的object_controller index以允许用户按对象过滤和排序搜索结果:attributes已经按位置搜索。 我的object_controller: def index if params[:search].present? @objects = Object.near(params[:search], 50, :order => :distance).paginate(:page => params[:page], :per_page => 9) else @objects = Object.paginate(:page => params[:page], :per_page => 9) end end 知道如何最好地将@search集成到meta_search gem所需的索引中吗? 以下是meta_search github为索引推荐的内容: def index @search = Article.search(params[:search]) @articles = @search.all # load all matching records # @articles = @search.relation # Retrieve […]

稳定/可重复的随机排序(MySQL,Rails)

我想通过随机排序的ActiveRecord模型列表(来自MySQL数据库的行)进行分页。 但是,这种随机化需要在每个会话的基础上持续存在,以便访问该网站的其他人也可以获得随机的,可分页的记录列表。 假设有足够的实体(数万个)将随机排序的ID值存储在会话或cookie中太大,所以我必须暂时以其他方式(MySQL,文件等)保留它。 最初我以为我可以根据会话ID和页面ID创建一个函数(返回该页面的对象ID),但是由于MySQL中的对象ID值不是连续的(有间隙),因此我似乎崩溃了正在戳它。 好处是它不需要/最小存储,但缺点是它实现起来可能非常复杂并且可能是CPU密集型的。 我的感觉是我应该创建一个交集表,例如: random_sorts( sort_id, created_at, user_id NULL if guest) random_sort_items( sort_id, item_id, position ) 然后只需将’sort_id’存储在会话中。 然后,我可以像往常一样对random_sorts WHERE sort_id = n ORDER BY position LIMIT …进行分页。 当然,我必须在那里放一些收割机,以便在一段时间不活动后将它们移除(基于random_sorts.created_at)。 不幸的是,我必须在创建新对象时(和/或删除旧对象,尽管删除非常罕见)使排序无效。 并且,随着负载的增加,该表的大小/性能(甚至正确索引)下降。 看起来这应该是一个解决的问题,但我找不到任何这样做的轨道插件…任何想法? 谢谢!!

排序列时如何忽略大小写

当我在ActiveAdmin中对模型的name列进行排序时,我得到如下输出: 苹果 冰柱 斑马 iMac电脑 iPhone手机 其中大写和小写字母似乎单独排序。 我更喜欢以下列方式显示已排序的列: 苹果 冰柱 iMac电脑 iPhone手机 斑马 没有不自然的区分大小写。 我试过使用这条线 column :name, sortable: ‘my_model.name.downcase’ 缓解此问题,但这会引发ActiveRecord::StatementInvalid错误。 我怎样才能让它发挥作用?

订购与第二模型相关的第一模型

我正在研究我的第一个项目与RoR,我需要在两个模型之间创建多对多的关系,但有可能将第一个模型的对象与第二个模型相关联。 假设我有两个以下型号 – 客户 – 路线 我想为许多路由分配许多客户,但是例如存储该协会的存储顺序 -Route 1 –Customer 2, position 1 –Customer 1, position 2 -Route 2 –Customer 3, position 1 –Customer 1, position 2 我想我必须使用has_many:through和belongs_to并在中间表中创建“position”字段,但是如何使这个字段可访问和编辑?