我有一个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) 我有一个功能"从外部网站导入文章".在我的第一个场景中,我测试从外部网站导入链接列表.
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在其他场景中保持阵列,以便我可以继续使用实际的结果集?
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) 在我们的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)
我的问题显然是,这是一个体面的想法,还是我不知道这个问题的最佳做法?
谢谢.
这让我疯了.也许我设计的数据有误,但我试图从父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) 我的 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))]属性,那么我的应用程序就会像魅力一样工作。我只是问如何自动添加属性,而不是手动添加。
我希望尽可能获得最干净的代码,所以要么通过常规的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将不再起作用.
有什么建议?
我有一张比赛桌.该表有一个名为的列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"功能?
在我的代码中,我正在构建一个 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>,对吗?
我在这里做错了什么?
在使用关键字API获取热门关键字和短语之后,我还会收到很多额外字词("the","a"等)的"脏"字词.
我也想用搜索词来区分名字.
是否有Ruby库来清理关键字列表?这样的算法是否存在?
c# ×3
ruby ×2
api ×1
asp.net-mvc ×1
associations ×1
bdd ×1
builder ×1
converters ×1
cucumber ×1
data-binding ×1
datetime ×1
group-by ×1
has-many ×1
jquery ×1
json.net ×1
keyword ×1
nodatime ×1
nokogiri ×1
postgresql ×1
routes ×1
select ×1
sum ×1
tdd ×1
timestamp ×1
timezone ×1
wpf ×1
xaml ×1
xml ×1