小编luc*_*tte的帖子

Rspec,shoulda,validate_uniqueness_of,带有范围和错误的错误消息

我有以下Rspec测试:

describe Productlimit do

  before(:each) do 
    @productlimit = Factory.create(:productlimit, :user => Factory.create(:user))
  end

  subject { @productlimit }

  ...

  it { should validate_uniqueness_of(:price_cents).scoped_to(:direction_down, :currency, :market_id, :user_id) }
  ...
end
Run Code Online (Sandbox Code Playgroud)

但我得到以下令人困惑的错误:

1) Productlimit 
     Failure/Error: it { should validate_uniqueness_of(:price_cents).scoped_to(:direction_down, :currency, :market_id, :user_id) }
       Expected errors to include "has already been taken" when price_cents is set to 9530, got errors: ["direction_down has already been taken (false)"]
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗?我不明白为什么这不起作用,因为错误信息似乎是正确的?

编辑:

在其他情况下也会发生这种情况:

# product_spec.rb
...
it { should validate_numericality_of(:price).with_message("price_cents must be greater than 0 (0)") }  

# …
Run Code Online (Sandbox Code Playgroud)

validation rspec ruby-on-rails shoulda ruby-on-rails-3

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

不能让capybara-webkit工作

我正在使用capybara在我的rails 3 app上进行集成测试.

当我添加:js => true到一个场景我的测试使用selenium但是当我更改为使用webkit驱动程序为js我会得到每个错误,如下所示:

Capybara :: Driver :: Webkit :: WebkitInvalidResponseError:无法加载URL:http://www.example.dev:7171/user_sessions

我的添加是一个多域应用程序所以在我的spec_helper我设置端口:Capybara.server_port = 7171

在后台块中,我将app_host设置为:Capybara.app_host =" http://# {subdomain} .example.dev:7171"

如果我然后将其添加到我的spec_helper rspec.configure块我然后得到上面的错误:

config.before(:each) do
   DatabaseCleaner.start
   Capybara.run_server = false
   Capybara.javascript_driver = :webkit
   Capybara.default_selector = :css
   Capybara.server_port = 7171 
end
Run Code Online (Sandbox Code Playgroud)

有人能帮忙吗?我也使用spork进行自动测试.

ruby webkit capybara rspec2 ruby-on-rails-3

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

为Ruby on Rails设置Vim

我使用Ruby on Rails并希望使用vim作为首选编辑器.但是,我找不到任何地方一步一步的简单设置,白痴证明,说明如何正确设置它的解释步骤.

我希望正确设置vim,使用漂亮的插件链接vim for rails,nerdtree和类似的东西.请帮帮我,我将非常感激.

到目前为止,我已经安装了RoR,vim和git.

vim ruby-on-rails

15
推荐指数
2
解决办法
9039
查看次数

通过Ajax与kaminari进行多重分页

我想通过Ajax对Kaminari应用多个分页现在这里是我的控制器代码

def user_note
    @user = current_user
    @notes = Bookmark.where('user_id = ? && note is not NULL',current_user.id).order('created_at DESC').page(params[:page_1]).per(4)

    @bookmarks = Bookmark.where('user_id = ? && note is NULL',current_user.id).order('created_at DESC').page(params[:page_2]).per(4)

    respond_to do |format|
      format.html
      format.xml{ render :xml => @user}
    end   end
Run Code Online (Sandbox Code Playgroud)

现在对于视图我有两个部分来渲染这个数组

<div id="bookmarks">
<%= render :partial =>"users/bookmark",:locals => { :bookmark => @bookmarks} %>
            </div>
<%= paginate @bookmarks,:remote => true, :param_name => 'page' %>
Run Code Online (Sandbox Code Playgroud)

内部的部分是

<% bookmark.each do |bookmar| %>
  <%= render :partial => 'show_bookmark.html.erb' , :locals => { :bookma => bookmar} %> …
Run Code Online (Sandbox Code Playgroud)

ajax pagination ruby-on-rails-3 kaminari

14
推荐指数
2
解决办法
7941
查看次数

Bundler在尝试更新或安装时将永远挂起

尝试运行bundle install或bundle update时,bundler将永久挂起,而不是完成其功能.它完成的唯一时间是指定要更新的gem.

例如:

bundle update
Run Code Online (Sandbox Code Playgroud)

将永远挂起,除非我像这样使用它:

bundle update activerecord
Run Code Online (Sandbox Code Playgroud)

然后它将正常完成.

任何援助将不胜感激.

ruby rubygems bundler

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

Rails 3.1中的供应商CSS样式表和资产管道

我使用Twitter Bootstrap(不重要但它是第三方 CSS文件).因为它是第三方CSS"库",它应该进入/vendor/assets/stylesheets.到现在为止还挺好.

现在,我想在生产中使用Rails 3.1(.1)资产管道连接一个application.css中的所有CSS,这就是我遇到的问题.

当我运行rake assets:precompile它时,就像宣传的一样.Rake任务在public/assets带有摘要的所有文件夹中创建一些application.css文件.问题是这个文件只包含我的CSS文件中的CSS,/app/assets/stylesheets并完全忽略了我的供应商资产文件夹中的CSS .

有谁知道我在这里想念的内容以及如何告诉Rails将供应商样式表与应用程序一起连接起来?此外,仅包括:

<%= stylesheet_link_tag "application" %>
Run Code Online (Sandbox Code Playgroud)

在视图中(因为我希望最终所有内容都在一个文件中)或者我应该包含每个CSS文件?

precompile ruby-on-rails-3.1 asset-pipeline

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

Ruby Hash.new vs Hash文字

我正在调用传递一些键/值对的第三方API(用PHP编写).

此代码有效:

h = Hash.new
h['first_name'] = "Firstname"
h['last_name'] = "Lastname"
APICall([h]) # Record gets created
Run Code Online (Sandbox Code Playgroud)

这不是:

h = {'first_name' => "Firstname", 'last_name' => "Lastname"}
APICall([h]) # Record does not get created
Run Code Online (Sandbox Code Playgroud)

当我在两个实例中将Hash转储到控制台时,我获得了相同的数据结构.那么为什么第一种方式起作用但第二种方式不起作用呢?

编辑:不确定这是否重要,但我使用的是Ruby 1.8.7p72/Linux.另外一个键/值对是Base64编码的图像串.

ruby api hash

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

在rails旧版本中创建一个新项目

我的机器上有导轨版本3.2.1.安装的其他版本是3.0,3.0.3.每当我跑步

 rails new PROJECT_NAME
Run Code Online (Sandbox Code Playgroud)

命令,该项目在版本3.2.1中创建.我想在3.0.3版本中创建项目.

我该怎么办?

ruby-on-rails version project new-operator

12
推荐指数
3
解决办法
5334
查看次数

运行Ruby on Rails的最低规格VPS

我想开始使用我的第一个Ruby on Rails应用程序.

它会拉出一个图像,一些关于图像的文本显示两者,并有一个小框来写一些关于图像的文本,然后一旦提交就会写入数据库.

它不太可能有超过5个并发用户,因为它是一个个人项目.

在轨道上运行ruby所需的最低VPS规格是多少?是否有可能在64mb(128爆炸)内存或我可以更低?

ruby ruby-on-rails vps

12
推荐指数
2
解决办法
9020
查看次数

11
推荐指数
3
解决办法
2822
查看次数