我有一个我想安装的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,如果它有所作为
我正在尝试吐出一个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时间.任何想法都非常感激.
我注意到的一件事是,在我做的大多数项目中,一个需要很长时间(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而没有:慢速规范,但是,我希望有人能够更快地测试图像内容类型.
我是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) 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) 只是想知道是否有办法在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指定中引用局部变量?
干杯...
我已经使用黄瓜毫无困难地使用Rails 3了一段时间,但是经过今天的一大堆修补(包括宝石清理),每当我运行"黄瓜功能"时,我都会收到以下错误
您已经激活了构建器3.0.0,但您的Gemfile需要构建器2.1.2.考虑使用bundle exec.(宝石:: LoadError)
在我的机器上的多个铁轨项目中尝试过 - 所有这些都受到影响.不太确定如何解决这个问题 - 尝试安装2.1.2并在gemfile中指定它,但没有快乐.
"捆绑exec黄瓜功能"确实有效,但它似乎与自动测试没有很好的配合.
关于我所做的事情(以及更好的解决方法)的任何建议都非常感激.
工厂女孩是否有一种简单的方法来创建一个新工厂?
如果没有一种简单的方法,那么最简洁的方法是确保只为一组黄瓜特征(和/或规格)创建一个工厂?
例如,我需要在"用户"模型中使用单个(通用)管理员记录来测试多个黄瓜功能.理想情况下,我想在没有包围每个创建管理步骤的条件的情况下执行此操作,但是没有达到"记录已存在"错误.
任何建议赞赏.
我熟悉Rails 3,但不熟悉rails 2.我刚刚继承了一个没有Gemfile的rails 2项目,但是有很多config.gem行config/environment.rb
我只是想知道如何安装这些.bundle install回报Could not locate Gemfile.
我有一个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,这不是完全有效的.
处理此问题的标准方法是什么?