什么是有效抓取父表的所有行的"轨道方式"以及每行的子节点数?
我不想使用,counter_cache因为我想根据一些时间条件运行这些计数.
陈词滥调的博客示例:文章表.每篇文章都有0条或更多条评论.
我希望能够提取每篇文章在过去一小时,一天,一周中有多少评论.
但是,理想情况下,我不想迭代列表并为每篇文章单独调用sql,也不想使用它:include来预取所有数据并在应用服务器上处理它.
我想运行一个SQL语句并获得一个包含所有信息的结果集.
我知道我可以硬编码了完整的SQL,也许可以使用.find,只是设置:joins,:group和:conditions参数......但我想知道如果有一个"更好"的方式......又名"轨道办法"
提前致谢
我正在编写一个用Capybara填充文本字段的脚本,但在填写字段之前,我想确保字段为空并且文本未自动填充.基本上,我正在寻找相反的
(Object) fill_in(locator, options = {}) #empty_content_of? delete?
Run Code Online (Sandbox Code Playgroud)
在这里找到:http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Actions.建议吗?
这应该有一个简单的答案,但我很难找到它(已检查RSpec文档,使用RSpec的EverydayRails测试,谷歌搜索结果).在我的模型规范中,我喜欢包括基本属性规范,如下所示:
describe Foo do
describe "basic attributes" do
before { @foo = create(:foo) }
subject { @foo }
it { should be_valid }
it { should respond_to(:color) }
it { should respond_to(:height) }
it { should respond_to(:some_other_attribute) }
it { should respond_to(:you_get_the_idea) }
...
Run Code Online (Sandbox Code Playgroud)
我喜欢这些规格,因为如果我的工厂和/或模型中存在某种错误,这些规格可以帮助我快速找到它.
我已将expect语法合并到所有其他规范中,我喜欢它的读取方式,但是如何在这里使用它?一种选择可能是
expect(@foo).to respond_to(:color)
Run Code Online (Sandbox Code Playgroud)
另一个可能是
expect(it).to respond_to(:color)
Run Code Online (Sandbox Code Playgroud)
前者涉及使用should语法避免的重复,但后者对我来说看起来很奇怪(可能只是我).
我意识到这个问题更多的是关于风格而不是功能*,但我们Ruby开发人员对风格很认真,我希望遵循标准实践并拥有可读的,惯用的代码.任何帮助表示赞赏.谢谢.
更新:顺便说一下,我提议的选项都没有实际工作.他们都抛出undefined method 'expect'错误.现在我真的很困惑!
考虑到错误之后,我意识到这是因为should上面的规格在一行块内.那么,混淆是如何用期望语法编写单行块?鉴于此更新,问题非常关乎功能性,我会很高兴听到别人的想法.
4/2015更新
rspec > 3.0添加了另一种处理这些的方法,听起来rspec ~> 4.0会废除should语法.每个迈伦大师赛:
一些用户对如何与期望语法相关以及是否可以继续使用它表示混淆.它将继续在RSpec 3中提供(同样,无论您的语法配置如何),但我们还添加了一个与期望语法更加一致的备用API:
describe Post …Run Code Online (Sandbox Code Playgroud) 以下是FactoryGirl 文档中的示例:
FactoryGirl.define do
factory :post do
name "Post name"
user
end
end
Run Code Online (Sandbox Code Playgroud)
在此示例中,user正在调用另一个工厂.我想要做的是有效调用user.id,但将其设置为属性的定义.这是一个精简的例子:
**models/job.rb**
...
belongs_to :assignee, :class_name => "User"
belongs_to :user
...
attr_accessible :assignee_id, :user_id
...
end
**factories/jobs.rb**
FactoryGirl.define do
factory :job do
assignee_id user.id #what I would like to do, but triggers "undefined method 'id'" error
user_id user.id #user_id is an attribute of the model and is the job assignor
end
Run Code Online (Sandbox Code Playgroud)
我试图整合讨论别名的文档部分,但没有运气:
FactoryGirl.define do
factory :user, :aliases => [:assignee] do
....
Run Code Online (Sandbox Code Playgroud)
我觉得(希望?)我在这附近,但任何见解都值得赞赏.谢谢. …
所以我是TDD的新手,我在测试中抛出一些Rspec错误......基本上在运行bundle exec rspec spec之后,我的undefined method 'visit'一些规格出错了.任何有关如何通过这些测试的帮助将非常感激:谢谢.
Failures:
1) User pages profile page
Failure/Error: before { visit user_path(user) }
NoMethodError:
undefined method `visit' for # <RSpec::Core::ExampleGroup::Nested_2::Nested_1:0x007ffda8049540>
# ./spec/requests/user_pages_spec.rb:9:in `block (3 levels) in <top (required)>'
2) User pages profile page
Failure/Error: before { visit user_path(user) }
NoMethodError:
undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_1:0x007ffda4f3ac38>
# ./spec/requests/user_pages_spec.rb:9:in `block (3 levels) in <top (required)>'
3) User pages signup page
Failure/Error: before { visit signup_path }
NoMethodError:
undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_2:0x007ffda8262e58>
# ./spec/requests/user_pages_spec.rb:16:in `block …Run Code Online (Sandbox Code Playgroud) 我希望Status在一些用户定义的设置之后有一个相对静态的模型(不同的用户可能在状态上有不同的值).
状态可以应用于不同的模型,例如Contact和Event.
所以返回的状态contact.status将不同于event.status
我想设计应用程序,以便状态表具有不同的类型(contacts和events).
什么是正确的策略和格式?
我正在考虑:has_one Status在Contact模型中声明,并:status_id在:contacts表中存储.同上Event.
:statuses table将具有状态值,类型和日期.
这有意义吗?你能建议一个更好的方法吗?
我试图将2K记录播种到模型中,到目前为止我尝试使用所有不同的方法(更快的csv,fast_seeder和railscasts ep).我觉得这应该很简单.我已经将所有数据都存储在CSV文件中,并且我已经建立了模型,准备播种.
到目前为止唯一有用的是RailsCasts剧集中的内容.我为我的属性插入了这段代码,它只播种了第一行(2K),就是这样:
Country.delete_all
open("#{Rails.root}/path_to_my_file") do |models|
models.read.each_line do |model|
column_1, column_2, column_3, column_4 = model.chomp.split(",")
Model.create!(:attr_1 => column_1, :attr_2 => column_2, ...etc)
end
end
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用FasterCSV基于其他一些问题,但我收到了一堆错误,说fastercsv已经包含在最新版本的ruby中,我似乎无法弄明白(这可能是我的错,但我没有我能找到一个好的SO问题,很好地解决了这个问题.
最后,Fast_Seeder似乎有一些潜力,它识别了我的所有条目,但没有将它们中的任何一个保存到模型中,因为我收到了这个错误:
SQLite3::SQLException: too many terms in compound SELECT:(all my columns)
无论如何,我觉得这应该很简单.我只有一个带有2K条目的CSV,以及我需要播种的空白模型.最好的方法是非常感谢,谢谢!
我查看了AWS 论坛和其他地方,但没有找到解决方案。我有一个 lambda 函数,它在调用时会创建一个日志流,其中填充日志事件。大约 12 小时后,日志流仍然存在,但是当我打开它时,我看到以下内容:
该链接解释了如何开始发送事件数据,但我已经进行了此设置,并且我正在发送事件数据,它会在一段时间后消失。
我猜测某处有一些设置(允许最大存储量或是否清除日志),但如果有,我还没有找到。
我知道应该使用Procs和lambdas的不同情况(lambda检查参数数量等),但是它们会占用不同的内存量吗?如果是这样,哪一个更有效率?