小编bli*_*183的帖子

Rails中的范围与类方法3

基于Rails 3 API,范围和类方法之间的差异几乎不存在.

class Shipment < ActiveRecord::Base
  def self.unshipped
    where(:shipped => false)
  end
end
Run Code Online (Sandbox Code Playgroud)

是相同的

scope :unshipped, where(:shipped => false)
Run Code Online (Sandbox Code Playgroud)

但是,我发现我有时会使用它们得到不同的结果.

虽然它们都生成相同的,正确的SQL查询,但在调用时,范围似乎并不总是返回正确的值.看起来这个问题只发生在它在方法中两次调用相同的方式时,尽管是在不同的货件上.第二次调用时,使用范围时它会返回与第一次相同的操作.然而,如果我使用类方法,它可以正常工作.

使用范围时是否会出现某种查询缓存?

编辑:

order.line_items.unshipped
Run Code Online (Sandbox Code Playgroud)

上面的行是调用范围的方式.订单有很多line_items.

generate_multiple_shipments方法被调用两次,因为测试会创建一个订单并生成货件以查看其数量.然后它会对订单进行更改并重新生成货件.但是,group_by_ship_date返回与订单的第一次迭代相同的结果.

def generate_multiple_shipments(order)
  line_items_by_date = group_by_ship_date(order.line_items.unshipped)

  line_items_by_date.keys.sort.map do |date|
    shipment = clone_from_order(order)
    shipment.ship_date = date
    line_items_by_date[date].each { |line_item| shipment.line_items << line_item }
    shipment
  end
end

def group_by_ship_date(line_items)    
  hash = {}
  line_items.each do |line_item|
    hash[line_item.ship_date] ||= []
    hash[line_item.ship_date] << line_item
  end
  hash
end
Run Code Online (Sandbox Code Playgroud)

scope ruby-on-rails ruby-on-rails-3

14
推荐指数
1
解决办法
2051
查看次数

Capybara/Cucumber的睡眠功能?

我在我的网站上有一个页面,我正在尝试测试,要求用户在继续操作之前在页面上花费至少五秒钟.有没有办法让Capybara让我的Cucumber测试暂停在那个页面上等待五秒钟,然后继续我描述的下一步?

ruby ruby-on-rails cucumber capybara

10
推荐指数
1
解决办法
2万
查看次数

根据匹配位置对自动完成UI结果进行排序

我想根据匹配发生在字符串中的位置对jQuery自动完成UI结果进行排序.匹配是第一个字母的结果应优先于匹配位于字符串中间的结果.

搜索"M"应返回:

马特,迈克尔,萨姆,蒂姆,亚当,本杰明

相反,因为它现在只是按字母顺序返回项目,所以我得到了这个:

亚当,本杰明,马特,迈克尔,萨姆,蒂姆

不幸的是,看起来Autocomplete UI没有任何选项来执行此类操作,而只是按照收到它们的顺序显示结果.让MySql进行排序不是一个选项,因为所有可能的匹配都是预先加载的,因此我不会在每次按键时调用数据库.有人做过这样的事吗?

jquery jquery-ui jquery-ui-autocomplete

6
推荐指数
1
解决办法
6876
查看次数

使用cypher/neo4j比较数组值

我有一个成员图和他们看过的项目.

此数据将用于根据类似成员查看过的项目推荐项目.我想根据项目颜色的相似程度对项目进行排序.颜色以数组形式存储在项目中(["红色","蓝色","绿色"]).在cypher中有没有办法比较数组,看看它们共有多少个元素?

neo4j cypher

6
推荐指数
1
解决办法
2709
查看次数

在 Heroku 评论应用程序中启用 Heroku 实验室功能

我有一个启用了评论应用程序的 Heroku 应用程序。审查应用程序是基于我的应用程序根目录中的 app.json 文件配置的。我可以添加插件,但似乎无法启用运行时动态元数据实验室功能。以下只是我尝试使其工作的众多方法之一......

{
  "name": "Foo",
  "scripts": {
    "postdeploy": "bundle exec rake db:migrate db:seed"
  },
  "formation": {
    "worker": {
      "quantity": 1
    },
    "web": {
      "quantity": 1
    }
  },
  "addons": [
    "heroku-postgresql",
    "heroku-redis",
  ],
  "labs": [
    "runtime-dyno-metadata"
  ],
  "buildpacks": [
    {
      "url": "https://github.com/heroku/heroku-buildpack-nodejs.git"
    },
    {
      "url": "https://github.com/heroku/heroku-buildpack-ruby.git"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku

4
推荐指数
1
解决办法
1289
查看次数