小编Fre*_*III的帖子

订购玩家关于其关联模型的SUM

我有一个6500的数据库,players每个玩家平均有15个游戏results.

用例

我想生成一个玩家列表,按照他们的奖金总和(结果表中的一个字段)排序.我更喜欢这个在某种范围内,所以我也可以过滤播放器所在国家/地区的列表等.

性能

我看到过提及cache_counter性能领域的帖子.在我的情况下,我有成千上万的结果记录(75.000+)所以我不希望每次有人访问生成的列表时都进行计算.

解决这个问题的最佳模式是什么?我该如何实现它?

楷模

class Player < ActiveRecord::Base
  has_many :results
end

class Result < ActiveRecord::Base
  belongs_to :player
end
Run Code Online (Sandbox Code Playgroud)

架构

  create_table "players", :force => true do |t|
    t.string   "name"
    t.string   "nationality"
  end

  create_table "results", :force => true do |t|
    t.integer  "player_id"
    t.date     "event_date"
    t.integer  "place"
    t.integer  "prize"
  end
Run Code Online (Sandbox Code Playgroud)

更新

我想要完成的是达到我可以使用的程度:

@players = Player.order_by_prize
Run Code Online (Sandbox Code Playgroud)

@players = Player.filter_by_country('USA').order_by_prize('desc')
Run Code Online (Sandbox Code Playgroud)

group-by sum associations has-many ruby-on-rails-3

5
推荐指数
1
解决办法
3449
查看次数

如何使用黄瓜在场景之间共享状态

我有一个功能"从外部网站导入文章".在我的第一个场景中,我测试从外部网站导入链接列表.

Feature: Importing articles from external website
  Scenario: Searching articles on example.com and return the links
    Given there is an Importer
    And its URL is "http://example.com"
    When we search for "demo"
    Then the Importer should return 25 links
    And one of the links should be "http://example.com/demo.html"
Run Code Online (Sandbox Code Playgroud)

在我的步骤中,我有一个@result数组中的25个链接.

在我的第二个场景中,我想采取其中一个链接并测试我正确解析文章的事实.

现在显然我不想每次都去外部网站,特别是现在第一个场景通过了.

我如何继续这里,以便我可以继续测试而不需要为第一个场景发出HTTP请求?或者我应该运行一次并@result在其他场景中保持阵列,以便我可以继续使用实际的结果集?

ruby tdd bdd cucumber

5
推荐指数
1
解决办法
8235
查看次数

命名嵌套路由的参数

resources :leagues do
  resources :schedule
end
Run Code Online (Sandbox Code Playgroud)

这会产生:

leagues/:id
leagues/:league_id/schedule/:id
Run Code Online (Sandbox Code Playgroud)

如何保持联盟ID不会改变参数名称?所以它将是:

leagues/:id
leagues/:id/schedule/:schedule_id
Run Code Online (Sandbox Code Playgroud)

routes nested-routes ruby-on-rails-3

3
推荐指数
1
解决办法
2206
查看次数

如何从NodaTime的偏移中获取所有IANA时区?

在我们的ASP.NET MVC 5应用程序中,我们拥有带有时区ID(IANA)的用户配置文件.

public class User
{
    public int Id { get; set; }
    public string TimeZoneId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

任务是在当地时间早上6点向所有用户发送电子邮件.我们的计划是每小时向所有时区发送电子邮件,当地时间是当时时间早上6点(根据服务器的UTC时间计算).

由于我们只有时区ID,我希望得到相应的时区ID,比方说,偏移-4:00:00 - 考虑到DST.

string[] timezoneIds;
Run Code Online (Sandbox Code Playgroud)

然后,我可以像这样查询我的数据库:

db.Users.Where(x => timezoneIds.Contains(x.TimeZoneId));
Run Code Online (Sandbox Code Playgroud)

我的问题显然是,这是一个体面的想法,还是我不知道这个问题的最佳做法?

谢谢.

c# asp.net-mvc timezone datetimeoffset nodatime

3
推荐指数
1
解决办法
962
查看次数

如何从NESTED ItemsControl绑定到活动的ItemsControl项

这让我疯了.也许我设计的数据有误,但我试图从父ItemsControl绑定到活动项.

每个区域都有一个颜色,以便在屏幕上轻松识别.我没有给每个座位赋予颜色属性,而是在Area模型中种植了颜色.所有儿童座椅都需要使用这种颜色来自己画画.

无论我尝试什么,我都无法访问父ItemsControl,因此我可以获取该特定区域的活动颜色属性.

型号(简体)

public class BuildingLayout
{
    public ObservableCollection<Area> Areas { get; set; }
}

public class Area
{
    public Color Color { get; set; } // The color I want to bind to
    ...
    public ObservableCollection<Table> Tables { get; set; }
}

public class Table
{
    public int Seat { get; set; } // The seat needs to get the area color
}
Run Code Online (Sandbox Code Playgroud)

XAML

<ItemsControl ItemsSource="{Binding Path=Areas}">
    ...
    <ItemsControl.ItemTemplate>
        <!-- Nested Listbox -->
        <ItemsControl ItemsSource="{Binding Path=Tables}">
              ...
              <ItemsControl.ItemTemplate> …
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf xaml

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

自动将 JsonConverter 属性应用于类型的所有属性

我的 ViewModel 中有一个用于DateTimeOffset属性的自定义 JsonConverter。我有 100 多个 ViewModel。

public class ItemViewModel 
{
  public string Name { get; set; }

  [JsonConverter(typeof(CustomDateTimeOffsetConverter))]
  public DateTimeOffset DateCreated { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何将此属性应用于所有 DateTimeOffset 属性,而不将其添加到我的所有 ViewModel 中?

当我阅读此答案时,我以为我已经找到了解决方案,但是当我应用它时,CustomResolver 仅在父对象本身上触发,而不是在 DateTimeOffset 属性或任何属性上触发。

public class CustomResolver : DefaultContractResolver
{
    protected override JsonObjectContract CreateObjectContract(Type objectType)
    {
        JsonObjectContract contract = base.CreateObjectContract(objectType);
        if (objectType == typeof(DateTimeOffset))
        {
            contract.Converter = new CustomDateTimeOffsetConverter();
        }
        return contract;
    }
}
Run Code Online (Sandbox Code Playgroud)

回顾一下,我已经完成了其他所有工作。如果我手动添加该[JsonConverter(typeof(CustomDateTimeOffsetConverter))]属性,那么我的应用程序就会像魅力一样工作。我只是问如何自动添加属性,而不是手动添加。

c# json.net converters

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

如何在最后一个之前更改元素的CSS?

我希望尽可能获得最干净的代码,所以要么通过常规的CSS或jQuery.它必须是跨浏览器并在IE中工作.

标记是一个面包屑.

<div id="breadcrumb">
  <ul>
     <li><a href="#">Home</a></li>
     <li><a href="#">Sports</a></li>
     <li><a href="#">Football</a></li>
     <li><a href="#">Leagues/a></li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

所以,我想通过3个步骤来设计这个面包屑.

  • 一个项目
  • 之间的 一个项目(所以不是第一次,而不是最后一个)
  • 最后 一个项目

我无法用常规CSS来解决这个问题,因为IE不支持伪类,如:first-child等.

所以我尝试了使用jQuery并取得了一些成功:

$("#breadcrumb li:last > a").addClass("last");
Run Code Online (Sandbox Code Playgroud)

但是我无法弄清楚如何将它们定位在两者之间,因为如果我将所有#breadcrumb li> a设置为类"middle",那么使用.addClass将不再起作用.

有什么建议?

jquery jquery-selectors

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

如何将一整天与日期时间字段匹配?

我有一张比赛桌.该表有一个名为的列matchdate,它是一个datetime字段.

如果我在2011-12-01有3场比赛:

  • 2011-12-01 12:00:00
  • 2011-12-01 13:25:00
  • 2011-12-01 16:00:00

我如何查询?如何在1个单一日期查询所有比赛?

我已经看过了date_trunc(),to_char()
是不是有一些"select * where datetime in date"功能?

postgresql select datetime timestamp ruby-on-rails-3

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

Nokogiri XML Builder 错误 -&gt;“文档已具有根节点”

在我的代码中,我正在构建一个 XML 请求。然而,这个简单的片段会产生一个错误:

def create_gateways_request
  @request_xml = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
    xml.gateways(:ua => "#{@plugin_name} #{@version}") {
      xml.merchant {
        xml.account           MSP['merchant']['account_id']
        xml.site_id           MSP['merchant']['site_id']
        xml.site_secure_code  MSP['merchant']['site_code']
      }
      xml.customer {
        xml.country @customer[:country]
      }
    }
  end
  @request_xml.to_xml
end
Run Code Online (Sandbox Code Playgroud)

错误:

RuntimeError: Document already has a root node
from /Users/scriptdude/.rvm/gems/ruby-1.9.2-p290/gems/nokogiri-1.5.2/lib/nokogiri/xml/document.rb:212:in `add_child'
from /Users/scriptdude/.rvm/gems/ruby-1.9.2-p290/gems/nokogiri-1.5.2/lib/nokogiri/xml/node.rb:549:in `parent='
from /Users/scriptdude/.rvm/gems/ruby-1.9.2-p290/gems/nokogiri-1.5.2/lib/nokogiri/xml/builder.rb:371:in `insert'
from /Users/scriptdude/.rvm/gems/ruby-1.9.2-p290/gems/nokogiri-1.5.2/lib/nokogiri/xml/builder.rb:363:in `method_missing'
from (irb):146
from /Users/scriptdude/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/commands/console.rb:45:in `start'
from /Users/scriptdude/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/commands/console.rb:8:in `start'
from /Users/scriptdude/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.3/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

根节点是<gateways>,对吗?

我在这里做错了什么?

xml ruby-on-rails builder nokogiri

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

如何清理和改进关键字列表?

在使用关键字API获取热门关键字和短语之后,我还会收到很多额外字词("the","a"等)的"脏"字词.

我也想用搜索词来区分名字.

是否有Ruby库来清理关键字列表?这样的算法是否存在?

ruby api keyword

0
推荐指数
1
解决办法
417
查看次数