小编Ser*_*off的帖子

Gem Cells在Simpleform中运行不佳

我已经设置了Cell(链接到github)自包含的单元格.没什么特别的.一切都有效,除了一件事.

当单元格内的视图模板有一个simple_form_for帮助程序时 - 它不起作用.说

undefined method `simple_form_for' for #<SubscribeForm::Cell:0x0000000a0ceba8>
Run Code Online (Sandbox Code Playgroud)

不明白为什么.有任何想法吗?其他助手(link_to等)工作正常.并且simple_form_for可以在没有单元格的其他页面上工作.哦,这不是关于"重启服务器".谢谢你的建议.

ruby ruby-on-rails cells simple-form

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

未定义的方法“receive_message_chain”

令人惊讶的是找不到任何关于此的信息。

试图存根这个方法链:

Twitter::REST::Client.new(<some credentials>).user.followers_count
Run Code Online (Sandbox Code Playgroud)

我真正想做的是:

allow_any_instance_of(Twitter::REST::Client).to receive_message_chain(:user, :followers_count).and_return 0
Run Code Online (Sandbox Code Playgroud)

但它没有用。出错了undefined method 'receive_message_chain'

所以我在 Rspec-Mocks 3.0 上找到了这个教程:https : //github.com/rspec/rspec-mocks/blob/master/features/method_stubs/receive_message_chain.feature

并尝试了这个:

subject = Twitter::REST::Client
allow(subject).to receive_message_chain(:user, :followers_count).and_return 0
expect(Twitter::REST::Client.new.users.followers_count).to eq 0
Run Code Online (Sandbox Code Playgroud)

只是为了尝试一下 - 它也不起作用。有什么我做错了吗?

我有rspec-mocks (3.0.0.beta1)我的Gemfile.lock

其他类型的存根(例如.to receive(:method)工作正常。

rspec ruby-on-rails mocking

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

是否可以通过.send设置属性值?

我可以这样做吗?

self.send(:twitter_url) = result
Run Code Online (Sandbox Code Playgroud)

它对我来说不是这样的.

self.send(:twitter_url, result) # this doesn't work either
Run Code Online (Sandbox Code Playgroud)

Model.twitter_url 是一个属性(字符串列)

我需要这个来进行重构.


好的,还有一件事:

argument = :twitter_url
self.send(argument=, result)
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

ruby ruby-on-rails

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

如何在Postgres中进行查询以按月创建记录?(:created_at datetime列)

我有这个Ruby代码:

def visits_chart_data(domain)
  last_12_months.collect do |month|
    { created_at: month, count: domain.visits.created_on_month(month).count }
  end
end

def last_12_months
  (0..11).to_a.reverse.collect{ |month_offset| month_offset.months.ago.beginning_of_month }
end
Run Code Online (Sandbox Code Playgroud)

CreatedOnMonth只是一个范围:

scope :created_on_month, -> (month = Time.now) { where{ (created_at >= month.beginning_of_month) & (created_at <= month.end_of_month) } } 
Run Code Online (Sandbox Code Playgroud)

created_at 只是一个标准的日期时间戳.

如何优化它以进行一次查询而不是12?

我看到有些人使用GROUP_BY,但是我对PostgreSQL不太好,能够自己构建这样的查询.查询应按年份对记录进行分组并返回计数.也许有人可以帮助我.谢谢.

sql postgresql activerecord ruby-on-rails squeel

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