2016-12-28 9 views
0
begin 
    require "bundler/inline" 
rescue LoadError => e 
    $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" 
    raise e 
end 

gemfile(true) do 
    source "https://rubygems.org" 
    gem "rails", github: "rails/rails" 
    gem "sqlite3" 
end 

require "active_record" 
require "minitest/autorun" 
require "logger" 

# This connection will do for database-independent bug reports. 
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") 
ActiveRecord::Base.logger = Logger.new(STDOUT) 

ActiveRecord::Schema.define do 
    create_table :posts, force: true do |t| 
    end 

    create_table :comments, force: true do |t| 
    t.integer :post_id 
    end 
end 

class Post < ActiveRecord::Base 
end 

class Comment < ActiveRecord::Base 
    belongs_to :post 
end 

class BugTest < ActiveSupport::TestCase 
    def test_association_stuff 
    post = Post.create! 

    comment = Comment.create 
    assert_not_empty comment.errors.full_messages 
    end 
end 

このテストは現在のレールマスターでは失敗します。私はそれがRailsの5Rails 5 belongs_toデフォルト動作

から、デフォルトで必要なbelongs_toので、成功するはずだと思う は、この予想される動作ですか?

+0

私は#createを使用しているので、テストが成功するはずはないとの私の期待は間違っていました! #createの代わりに。 – yskkin

答えて

3

belongs_toがデフォルトでRails 5に必要です。あなたの例では、Rails 5アプリを実行していないので、ちょうどActiveRecordを使用しています。

# Require `belongs_to` associations by default. Previous versions had false. 
Rails.application.config.active_record.belongs_to_required_by_default = true 

は、あなたが持っている、あなたの例では、同様の結果を達成するために:あなたは新しいRailsの5アプリを生成するとき、あなたは次の行を持つファイルconfig/initializers/new_framework_defaults.rbを得るため

belongs_toはRailsの5ではデフォルトで必要とされます同様ActiveRecordため、この設定オプションを設定する(デフォルトでは、それがnil、別名falsy値だ意味し、設定されていない):

# This connection will do for database-independent bug reports. 
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") 
ActiveRecord::Base.logger = Logger.new(STDOUT) 
ActiveRecord::Base.belongs_to_required_by_default = true # <-- This line :) 

を今、あなたはあなたのテストを実行する場合、彼らは通過します。

詳細については、this pull requestを参照してください。

関連する問題