小编iro*_*and的帖子

如何在ruby中显示没有祖先方法的类的所有方法?

要显示由特定类定义的所有方法,但没有在祖先类中定义的方法,我就是这样写的.

foo.methods - foo.class.superclass.methods
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

ruby

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

如何合并两个散列而不丢失值

我有两个这样的哈希值。

a = {foo: {first: 1}, bar: {first: 2}}
b = {foo: {second: 3}, bar: {second: 4}}
Run Code Online (Sandbox Code Playgroud)

我期待这样的结果a.merge b

{foo: {first: 1, second: 3}, bar: {first: 2, second: 4}}
Run Code Online (Sandbox Code Playgroud)

但是a.merge b回报{:foo=>{:second=>3}, :bar=>{:second=>4}}

如何合并两个散列而不丢失值?

ruby hash

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

有没有办法使用postgresql函数来计算Rails中的加权平均值?

要根据公司的市场容量计算加权平均值,我有这样的方法:

class Company < ActiveRecord::Base
  def self.weighted_average(column)
    market_cap_sum = sum(:market_cap)
    array = []
    find_each do |company|
      next if company.send(column).nil?
      next if company.market_cap.nil?
      array << (company.market_cap.to_d/market_cap_sum) * company.send(column)
    end
    array.sum
  end
end
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,但计算速度很慢。如果有一种方法可以通过 postgresql 函数进行计算,我想使用它。

要计算标准差,有一个这样的函数,但我找不到如何用加权平均值计算标准差。

Company.select('stddev_pop(price) as stddev')
Run Code Online (Sandbox Code Playgroud)

可以做我想做的事吗?

postgresql ruby-on-rails

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

如何在MiniTest中使用参数存根方法

我可以这样stub的方法:

def test_stale_eh
  obj_under_test = Something.new
  refute obj_under_test.stale?

  Time.stub :now, Time.at(0) do
    assert obj_under_test.stale?
  end
end
Run Code Online (Sandbox Code Playgroud)

来自http://www.rubydoc.info/gems/minitest/4.2.0/Object:stub

但我找不到如何使用参数存根方法的信息.例如,如果我想存根Time.parse方法,我该怎么写呢?

ruby minitest

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

Rpsec检查记录的存在和值

我想测试一个User模型属性的存在.所以我这样写.

describe "Authentications" do
  it "sign up with twitter" do
    visit new_user_session_path
    expect { click_link "Sign up with Twitter"}.to change(User, :count).by(1)
  end
  describe "new user" do
    let(:new_user) { User.last }
    it "should have slug" do
      #new_user its(:slug) { should eq("foo") }
      new_user.slug should exist
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

第一次测试通过,但第二次测试失败,出现这样的错误.

  1) Authentications new user should have slug
     Failure/Error: new_user.slug should exist
     NoMethodError:
       "new user" does not respond to either #exist? or #exists?
     # ./spec/features/autentication_spec.rb:13:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

我想我的方法是错误的.我该怎么用?

毕竟我不仅要检查它的存在,还要检查它的价值.但它也失败了.

rspec ruby-on-rails

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

如何将数字添加到jQuery对象本身

我想在这样的特定jQuery对象中添加一个数字.

$('#count').text(Number($('#count').text()) + 1);
Run Code Online (Sandbox Code Playgroud)

它可以工作,但text()两次编写相同的选择器和方法有点多余.是否有更好的方法来使用jQuery,比如$('#count').text(Number(this) + 1);

javascript jquery

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

如何通过Ruby中的索引从Array获取多个值

有一个数组a = %w(a b c d e),并希望通过索引获取第二个和最后一个值.

我可以得到价值a[1], a[-1],但我需要写a两次.有没有办法获得一个数组a.at(1, -1)

ruby arrays

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

辅助方法不会通过 rails 控制台中的 `reload!` 重新加载

我有一个这样的辅助方法:

module PostsHelper
  def foo
    "foo"
  end
end
Run Code Online (Sandbox Code Playgroud)

在 rails 控制台中,我检查了函数,然后将文本更改"foo""bar",然后reload!是控制台,但helpers.foo仍然没有返回"bar"

也许 Helper 对象已经像这篇文章一样在控制台中创建了,我不确定。 Rails 控制台:重新加载!不反映模型文件的变化?可能的原因是什么?

只有我想知道如何在 rails 控制台中使用 helper 方法。你能告诉我怎么做吗?

ruby-on-rails helper rails-console

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

为什么范围#包括?比运算符更大或更小的速度慢得多

我有一个哈希数组,键是Date和值Integer.这是一个模拟它的测试代码.

hashes = 2000.times.map do |i|
  [Date.new(2017) - i.days, rand(100)]
end.to_h
Run Code Online (Sandbox Code Playgroud)

我想获得特定时期的价值.起初我写了Range#include?,但它很慢.

Benchmark.measure do
  hashes.select{|k,v| (Date.new(2012,3,3)..Date.new(2012,6,10)).include?(k)}
end

#<Benchmark::Tms:0x007fd16479bed0 @label="", @real=2.9242447479628026, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=2.920000000000016, @total=2.920000000000016>
Run Code Online (Sandbox Code Playgroud)

使用简单的大于或小于运算符,它变得快60倍.

Benchmark.measure do
  hashes.select{|k,v| k >= Date.new(2012,3,3) && k <= Date.new(2012,6,10)}
end

#<Benchmark::Tms:0x007fd162b61670 @label="", @real=0.05436371313408017, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=0.05000000000001137, @total=0.05000000000001137>
Run Code Online (Sandbox Code Playgroud)

我以为这两个表达基本相同.

为什么会有这么大的差异?

ruby activesupport

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

如何在"索引"页面和"显示"页面中呈现略有差异的部分

有一个模型Company有很多DailyDatum.

我想在companies/:id/daily_data和中显示每日数据daily_data/index.但在公司的页面中我不想显示company.name专栏.

视图/ daily_data/_daily_datum.html.erb

<tr>
  <td><%= daily_datum.company.name %></td>
  # This company.name needs to be shown when the partial is called from daily data index.
  <td><%= daily_datum.column1 %></td>
  <td><%= daily_datum.column2 %></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

视图/ daily_data/index.html.erb

<table>
  <thead>
  <tr>
    <th>Company Name</th>
    <th>Daily Datum1</th>
    <th>Daily Datum2</th>
  </tr>
  </thead>
  <%= render @daily_data %>
</table>
Run Code Online (Sandbox Code Playgroud)

意见/公司/ daily_data.html.erb

<table>
  <thead>
  <tr>
    <!--<th>Company Name</th>-->
    <th>Daily Datum1</th>
    <th>Daily Datum2</th>
  </tr>
  </thead>
  <%= render @daily_data %>
</table>
Run Code Online (Sandbox Code Playgroud)

我应该怎样处理这样的情况?我是否需要创建另一个部分HTML?

ruby-on-rails partial

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