2016-08-09 10 views
10

私はRails 5.0.0を使用しますが、何らかの理由でbelongs_to_required_by_defaultが動作しません!Rails 5 belongs_to_required_by_default does not work

アプリケーションは、それがoptional: falseオプション

class Visit < ApplicationRecord 
    belongs_to :user, optional: false 
end 

> v = Visit.new 
> v.valid? # => false 

でのみ動作しますが、なぜ設定は動作しません。新しいレールとして5アプリ

class Visit < ApplicationRecord 
    belongs_to :user 
end 

> v = Visit.new 
> v.valid? # => true 

を作成しました:任意のための

Rails.application.config.active_record.belongs_to_required_by_default = true 

感謝を提案

答えて

9

あなたはそれをどこに置いていますか? development.rbconfig.active_record.belongs_to_required_by_default = trueRails.application.configure doと入力して動作確認しました。あなたはすべてのためにそれをしたい場合は

あなたは私はあなたがロード順序に問題があります初期化子ディレクトリにそれを置く見つけると信じてconfig.active_record.belongs_to_required_by_default = true

としてクラスApplication < Rails::Applicationapplication.rbにそれを置くことができます。

+0

デフォルトで 'my_app/config/initializers/new_framework_defaults.rb' –

+1

を' class Application Ropeney

+0

これはあなたの答えとして機能しますが、なぜイニシャライザフォルダから初期化されないのですか?理解できません。 –

7

RAILS 5.1の編集:デフォルトのRails 5.1アプリケーションではすべてがうまくいくはずです。あなたのapplication.rb(reference)にconfig.load_defaults 5.1があることを確認してください。それは次のようになりRAILS 5.0.xでは

FOR

OLD ANSWERは、このRailsの問題https://github.com/rails/rails/issues/23589によると、その猿のパッチのActiveRecord間違っていくつかの宝石によるものです。

原因を見つけるまで、Gemfileでコメント/コメントを外したいと思うかもしれません。

この退屈なプロセスの後、私は最新のプロジェクトで、問題の原因となったのは(執筆時点で)宝物ahoy_mateycancancanおよびdelayed_job_active_recordであることがわかりました。 「公式のレールウェイ」以来、その間Ropeneyの答え作品で

、ではないが理想的ではないapplication.rbで、new_framework_default‌​s.rb初期化子でconfig.active_record.belongs_to_required_by_default = trueを宣言することです。

4

誰でもこの問題が発生している場合は、Rails 5.1にアップグレードして修正できます。 Rails 5.1では、config/initializers/new_framework_defaults.rbが削除され、config.load_defaults 5.1の行がapplication.rbに置き換えられました。この行には active_record.belongs_to_required_by_default = trueが含まれ、その他のオプションにはnew_framework_defaults.rbが含まれています。

module myApp 
class Application < Rails::Application 
# Initialize configuration defaults for originally generated Rails 
version. 
    config.load_defaults 5.1 

詳細については、このスレッドの最後を参照してください:https://github.com/rails/rails/issues/23589

関連する問題