小编Cit*_*enX的帖子

FactoryGirl:工厂未注册

我的项目结构如下:

projects/warehouse/core
projects/warehouse/products/bottles
projects/warehouse/products/boxes
Run Code Online (Sandbox Code Playgroud)

在这个项目中,应用程序逻辑,宝石等都在core应用程序中.我boxes为rspec设置了这样的:

projects/warehouse/products/boxes/spec
    /factories
    /models
Run Code Online (Sandbox Code Playgroud)

factories目录包含cubics.rb:

FactoryGirl.define do
  factory :cubic
    id 1
    dimension 12
  end
end
Run Code Online (Sandbox Code Playgroud)

models目录包含cubic_spec.rb:

require 'spec_helper'

describe Boxes::Cubic do
  it "has a valid factory" do
    FactoryGirl.create(:cubic).should be_valid
  end
end
Run Code Online (Sandbox Code Playgroud)

Cubic模型位于products/boxes/app/models/boxes/cubic.rb.

module Boxes
  class Cubic < BoxExBase
    self.table_name = 'containers'
    #validation stuff goes here
  end
end
Run Code Online (Sandbox Code Playgroud)

简单明了.当我执行时,rspec ../products/boxes/spec/models/cubic_spec.rb我得到了ArgumentError:Factory未注册:cubic.我已经尝试在spec_helper.rb中要求factory_girl_rails.我试过修改spec_helper.rb w /

FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
FactoryGirl.find_definitions
Run Code Online (Sandbox Code Playgroud)

core包含 …

rspec ruby-on-rails-3.2 factory-bot

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

Rails ActiveRecord Mysql2 ::错误:未知列'objectname.'

我有一个在Rails下失败的现有MySQL表的更新.这是相关的控制器代码:

on = ObjectName.find_by_object_id(params[:id])
if (on) #edit existing
  if on.update_attributes(params[:param_type] => params[:value])
    respond_to do |format|
      ...
end
Run Code Online (Sandbox Code Playgroud)

ObjectName模型类有3个值(object_id,other_id和prop1).更新发生时,生成的SQL将显示为

UPDATE `objectname` SET `other_id` = 245 WHERE `objectname`.`` IS NULL
Run Code Online (Sandbox Code Playgroud)

SET生成的SQL的一部分是正确的.为什么要将该WHERE子句设置为.`` IS NULL

mysql activerecord ruby-on-rails

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