小编Cra*_*ted的帖子

Ruby on Rails用外键删除灯具

我在使用使用外键的灯具设置测试时遇到了麻烦!如果有人能帮助我理解这一点,我将不胜感激.

比方说,例如: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)

testing ruby-on-rails fixtures ruby-on-rails-4

6
推荐指数
1
解决办法
2434
查看次数

如何防止Ruby on Rails Active记录从数据库获取默认模型值?

我正在使用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)

ruby firebird ruby-on-rails rails-activerecord

5
推荐指数
1
解决办法
895
查看次数