我的项目结构如下:
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包含 …
我有一个在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?