我在使用使用外键的灯具设置测试时遇到了麻烦!如果有人能帮助我理解这一点,我将不胜感激.
比方说,例如:user_type模型具有对模型的引用:role,当测试执行时,测试数据库中的所有数据都被删除以再次重新插入,Rails首先从角色模型中删除数据,而不是删除数据首先来自:user_type和之后:role.
固定装置:
#roles.yml
technical:
name: 'Technical'
obs: 'User Role for technical / maintenance users!'
#user_types.yml
technic:
role: technical
name: 'Technic'
is_admin: true
Run Code Online (Sandbox Code Playgroud)
测试:
#app/test/models/role_test.rb
require 'test_helper'
class RoleTest < ActiveSupport::TestCase
fixtures :roles
test 'save Role without name' do
data = Role.new()
data.valid?
assert data.errors.added?(:name, :blank), 'Role saved without name!'
end
end
#app/test/models/user_type_test.rb
require 'test_helper'
class UserTypeTest < ActiveSupport::TestCase
fixtures :user_types
test 'save User Type without role_id' do
data = UserType.new(:name => …Run Code Online (Sandbox Code Playgroud) 我正在使用Firebird及其SQL引擎开发RoR应用程序,但我不明白为什么ActiveRecord(AR)不断查询数据库的默认值!
这是表DDL:
CREATE TABLE GLOBAL_SETTINGS
(
SKEY varchar(64) NOT NULL,
SVALUE varchar(256) NOT NULL,
OBS blob sub_type 1,
IS_SYSTEM "BOOLEAN" DEFAULT 1 NOT NULL,
CREATED_AT timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
UPDATED_AT timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
CONSTRAINT PK_GLOBAL_SETTINGS_SKEY PRIMARY KEY (SKEY)
);
Run Code Online (Sandbox Code Playgroud)
这是创建此表的迁移:(create_global_settings.rb)
class CreateGlobalSettings < ActiveRecord::Migration
def up
create_table :global_settings, :id => false do |t|
t.string :skey, :null => false, :limit => 64
t.string :svalue, :null => false, :limit => 256
t.text :obs
t.boolean :is_system, :null => …Run Code Online (Sandbox Code Playgroud)