小编Kev*_*alt的帖子

编写Rails编码标准的好例子?

我正在为Rails应用程序开发代码标准,并正在寻找其他人开发的编码标准的一些很好的例子.在...中讨论的想法扩展了一些东西

有没有人有好的参考分享?

http://www.scribd.com/doc/2889649/Rails-coding-standards-defined

例子:

  1. STYLE:排列哈希箭头以提高可读性
  2. STYLE:在=>哈希箭头周围放置空格
  3. STYLE:在方法参数之后的','之后放置空格 - 但在方法名称和'('之间没有空格

(请注意,我是StackOverflow的新手,并不确定这是否算作"问题"......如果不是,请告知...)

coding-style ruby-on-rails

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

如何在每次测试之前让Rails测试数据库重建?

我目前正在开始从灯具迁移到工厂并遇到一些测试数据库挑战.

当我运行整个测试套件时,数据库将被清除,并重新加载新的工厂生成的数据.但是,当我运行单个单元测试时,数据库不会清除旧值.

我可以在每个单独的测试之前运行rake db:test:prepare,但这会减慢我的开发速度.

这是我的测试设置:

  self.use_transactional_fixtures = false
  self.use_instantiated_fixtures  = true
Run Code Online (Sandbox Code Playgroud)

例如:

require File.dirname(__FILE__) + '/../test_helper'
class LocationTest < ActiveSupport::TestCase
  test "should require name to save" do
    location = Factory.create(:location)
  end
end
Run Code Online (Sandbox Code Playgroud)

将成功运行一次但在后续运行测试文件时失败.之前从未发生这种情况,因为测试夹具会在每次运行时加载.

我添加了工厂排序,但在每次运行期间只有序列属性:

  Factory.define :location do |l|
    l.sequence(:name) {|n| "place#{n}"}
    l.street  '123 N Pitt Street'
    l.state_id 4
    l.city 'San Francisco'
    l.location_type_id LocationType::COMMON
    l.shipper_id 1
    l.zip 23658
  end
Run Code Online (Sandbox Code Playgroud)

结果是:

trunk>ruby test\unit\location_test.rb
Loaded suite test/unit/location_test
Started
.
Finished in 0.162 seconds.

1 tests, 0 assertions, 0 failures, 0 errors

>ruby test\unit\location_test.rb …
Run Code Online (Sandbox Code Playgroud)

testing unit-testing ruby-on-rails

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

工厂女孩的依赖属性

看起来好像我应该能够在谷歌搜索和测试几个小时后找到这个问题的明显答案.

我希望能够在caredate工厂中设置caredate.user_id => provider.user_id.

测试错误:

ActiveRecord :: RecordInvalid:验证失败:用户必须与提供者用户相同

我有一个ActiveRecord验证,通过浏览器测试时有效:

class Caredate < ActiveRecord::Base //works fine when testing via browser
  belongs_to :user
  belongs_to :provider

  validates_presence_of :user_id
  validates_presence_of :provider_id
  validate :user_must_be_same_as_provider_user

  def user_must_be_same_as_provider_user
    errors.add(:user_id, "must be same as provider user") unless self.user_id == self.provider.user_id
  end

end

//factories.rb
Factory.define :user do |f| 
  f.password "test1234"
  f.sequence(:email) { |n| "foo#{n}@example.com" }
end

Factory.define :caredate do |f| 
  f.association :provider
  **f.user_id { Provider.find_by_id(provider_id).user_id }  //FAILS HERE**
end

Factory.define :provider do |f| 
  f.association :user
end
Run Code Online (Sandbox Code Playgroud)

如果以前已经回答过,我很抱歉; 我尝试了几种不同的选择,无法让它发挥作用.

更新:这通过验证,所以我越来越近了.我可以用一个随机数来破解. …

testing unit-testing ruby-on-rails factory-bot

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

在Ruby中按布尔值对对象排序

如果以前已经回答过或者很明显,我很抱歉...在这里和Goog上做了一些搜索并找不到答案.

我想按价格对一系列提供商进行排序,以及它们是否是preferred_provider?(对或错)

例如array p of Providers......

p1.price == 1, p1.preferred_provider? == false
p2.price == 2, p2.preferred_provider? == true
p2.price == 3, p3.preferred_provider? == true
Run Code Online (Sandbox Code Playgroud)

我想p.sort_by并得到:

[p2 p3 p1]
Run Code Online (Sandbox Code Playgroud)

IAW

p.sort_by {|x| x.preferred_provider?, x.price }
Run Code Online (Sandbox Code Playgroud)

不起作用,得到......

undefined method `<=>' for false:FalseClass
Run Code Online (Sandbox Code Playgroud)

关于更好地解决这个问题的方法的任何建议?

ruby sorting boolean ruby-on-rails enumerable

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