小编Pla*_*Ton的帖子

Rvm:无法卸载bundler 1.1.0

我有一个我想安装的rails 3.0.2项目,尽管我的大多数新项目都是3.2+

我去运行bundle install并收到以下消息:

Bundler could not find compatible versions for gem "bundler":   In Gemfile:
    rails (= 3.0.2) ruby depends on
      bundler (~> 1.0.0) ruby

  Current Bundler version:
    bundler (1.1.0)

This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?
Run Code Online (Sandbox Code Playgroud)

"不是问题"我想我自己."新的宝石套装,卸载捆绑器1.1.0,安装1.0.0,我们就走了".

但不是.

RVM不会让我卸载1.1.0.我可以安装其他版本,我可以卸载其他版本,但我无法卸载1.1.0.如果我输入gem list bundler,它会显示1.1.0,但如果我输入gem uninstall bundler(带或不带版本标签),则表示'gem not installed'.

任何时候我创建一个新的宝石集它默认安装...我无法卸载.知道这里发生了什么吗?RVM版本1.9.2,如果它有所作为

ruby bundler rvm

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

Django:过滤日期时间字段*仅*年份值?

我正在尝试吐出一个django页面,其中列出了创建年份的所有条目.所以,例如:

2010:

  • 注4

  • 注5

  • 注6

2009年:

  • 注1

  • 笔记2

  • 注3

事实证明,这比我预期的要困难得多.数据来自的模型如下:

class Note(models.Model):
    business = models.ForeignKey(Business)
    note = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'client_note'

    @property
    def note_year(self):
        return self.created.strftime('%Y')

    def __unicode__(self):
        return '%s' % self.note
Run Code Online (Sandbox Code Playgroud)

我尝试了几种不同的方式,但似乎遇到了各种障碍.我猜测一个有效的'分组'方法可以解决这个问题(PostGres DB Backend),但我似乎无法找到任何支持它的Django功能.我尝试从数据库中获取个别年份,但我很难找到一种仅按年份值过滤datetime字段的方法.最后,我尝试添加note_year @property,但因为它是派生的,所以我无法过滤这些值.

有什么建议以优雅的方式做到这一点?我认为它应该非常简单,但我有一个heckuva时间.任何想法都非常感激.

python django group-by django-models django-queryset

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

Paperclip/Rspec测试:有没有更快的方法来测试paperclip validates_attachment_content_type?

我注意到的一件事是,在我做的大多数项目中,一个需要很长时间(30秒+)的规范就是这个应该/回形针助手:

it { should validate_attachment_content_type(:bannerimage)
  .allowing('image/png', 'image/jpeg', 'image/gif', 'image/jpg')
  .rejecting('text/plain')
}
Run Code Online (Sandbox Code Playgroud)

我非常想保留内容类型验证,但我想知道是否有更快的方法来实现它.我已经用以下标记标记了这些测试:慢速运行rspec而没有:慢速规范,但是,我希望有人能够更快地测试图像内容类型.

rspec ruby-on-rails shoulda paperclip paperclip-validation

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

Rails 3:如何以嵌入的形式显示错误消息?

我是rails的新手并尝试设置我的第一个嵌入式表单.表单本身可以工作,但我无法确定如何将验证错误消息发送到视图.我假设f.object.errors会提供访问权限,但是当说该方法存在时,f.object.errors.count总是返回0,而f.object.errors.any?返回false.除了没有显示实际的错误消息之外,表单按预期工作 - 即,未能插入无效数据并返回到验证失败的表单.下面列出的型号,控制器和视图 - 任何帮助非常感谢.

...
<!-- Form embedded in boards/show.html.erb -->
<%= form_for([@board, @board.boardthreads.build]) do |f| %> 
    <div class="field">  
        <%= f.label :title %><br />  
        <%= f.text_field :title %>  
    </div>  
    <div class="field">    
        <div class="actions">  <%= f.submit %>  </div> 
    </div>
<% end %>
...



class Boardthread < ActiveRecord::Base
  belongs_to :user
  belongs_to :board

  validates :user, :presence => true
  validates :board, :presence => true
  validates :title, :presence => true
end


class BoardthreadsController < ApplicationController
    def create

        @board = Board.find(params[:board_id])
        @boardthread = @board.boardthreads.new(params[:boardthread])  
        @boardthread.user …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

Rails 3:嵌套fields_for的唯一性验证

A有两个型号,"商店"和"产品",通过has_many:through链接.

在商店表单中有多个产品的嵌套属性,我在产品的唯一性验证方面遇到了一些麻烦.如果我输入产品,保存它,然后尝试为新产品输入相同的名称,则唯一性验证会成功触发.

但是,如果我在同一嵌套表单的两行中输入相同的产品名称,则表单被接受 - 唯一性验证不会触发.

我猜这是一个相当普遍的问题,但我找不到任何简单的解决方案.任何人都有最简单的方法建议,以确保在同一嵌套表格中遵守唯一性验证?

编辑:下面包含的产品型号

class Product < ActiveRecord::Base

  has_many :shop_products
  has_many :shops, :through => :shop_products

  validates_presence_of :name
  validates_uniqueness_of :name
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails validates-uniqueness-of ruby-on-rails-3

10
推荐指数
2
解决办法
4913
查看次数

Rspec分配局部变量?

只是想知道是否有办法在rspec中访问局部变量而不将它们变成实例变量?解释我的问题:

我有以下行动:

  def queue_due_mail
    payments = Payment.due_soon.where(:send_reminder => true)
    payments.each do |p|
      PaymentMailer.delay.reminder_email(p)
      p.send_reminder = false
      p.save
    end
    redirect_to root_path
  end
Run Code Online (Sandbox Code Playgroud)

而且,在我的规范中,我想运行这样的东西:

it "should assign nearly due payments to payments" do
  Payment.stub_chain(:due_soon, :where) { [mock_payment] }
  get :queue_due_mail
  assigns[:payments].should eq([mock_payment])
end
Run Code Online (Sandbox Code Playgroud)

问题是,只有当我将本地变量'payments'变为'@payments'时,分配[:payments]调用才有效.这不是一个主要问题,但我宁愿不让我的rspec测试受到实际代码的影响.

那么,有没有办法在rspec指定中引用局部变量?

干杯...

rspec ruby-on-rails

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

Rails 3/Cucumber问题:"...已激活构建器3.0.0,但您的Gemfile需要构建器2.1.2"

我已经使用黄瓜毫无困难地使用Rails 3了一段时间,但是经过今天的一大堆修补(包括宝石清理),每当我运行"黄瓜功能"时,我都会收到以下错误

您已经激活了构建器3.0.0,但您的Gemfile需要构建器2.1.2.考虑使用bundle exec.(宝石:: LoadError)

在我的机器上的多个铁轨项目中尝试过 - 所有这些都受到影响.不太确定如何解决这个问题 - 尝试安装2.1.2并在gemfile中指定它,但没有快乐.

"捆绑exec黄瓜功能"确实有效,但它似乎与自动测试没有很好的配合.

关于我所做的事情(以及更好的解决方法)的任何建议都非常感激.

ruby-on-rails builder cucumber

9
推荐指数
2
解决办法
2526
查看次数

Factory Girl Newbie:如果尚未存在,如何创建新记录

工厂女孩是否有一种简单的方法来创建一个新工厂?

如果没有一种简单的方法,那么最简洁的方法是确保只为一组黄瓜特征(和/或规格)创建一个工厂?

例如,我需要在"用户"模型中使用单个(通用)管理员记录来测试多个黄瓜功能.理想情况下,我想在没有包围每个创建管理步骤的条件的情况下执行此操作,但是没有达到"记录已存在"错误.

任何建议赞赏.

ruby-on-rails cucumber factory-bot

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

Rails 3用户到Rails 2:安装没有gemfile的gem?

我熟悉Rails 3,但不熟悉rails 2.我刚刚继承了一个没有Gemfile的rails 2项目,但是有很多config.gemconfig/environment.rb

我只是想知道如何安装这些.bundle install回报Could not locate Gemfile.

gem ruby-on-rails

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

Rails:保存后验证关联?

我有一个User有很多的模型roles.角色包含一个user_id我想要的字段validate_presence_of

问题是:如果我在创建时为用户分配了一个角色,则验证失败,因为没有设置user_id.现在,我确实想验证user_id是否存在,但我需要在检查之前保存用户.

代码目前看起来像这样:

@user = User.new(params[:user])
@user.roles << Role.new(:name => 'Peon') unless @user.has_roles?
if @user.save
  # ...
Run Code Online (Sandbox Code Playgroud)

我能想到绕过这个问题的唯一方法包括禁用我不想做的验证,或者双重保存到DB,这不是完全有效的.

处理此问题的标准方法是什么?

validation ruby-on-rails

9
推荐指数
2
解决办法
5557
查看次数