2017-08-02 6 views
1

私は1月から取り組んできたレール5プロジェクトを手に入れましたが、今日は親を指定せずに子レコードを作成できたことに気付きました。 Ruby 2.4.1と一緒にレール5.1.2を使用していることを確認して以来、これはかなり驚いています。サイトはまだ開発中です。私はレールコンソールを開いて、親の検証が必要な私の他のモデルのいくつかをテストしました(デフォルトではレール5で検証する必要があります)。これらのレコードも関連なしで作成されました。Rails 5 Stopped Validating Associations

これは意味をなさない。私はこれがいつか働いていたことを知っています。今週の最も大きな変更は、ファイルアップロードの宝石「paperclip」を追加したときです。誰にも何か提案がありますか、何をチェックするかについてのアイデアはありますか?

class Order < ApplicationRecord 
    require 'csv' 

    include SendGrid 
    belongs_to :admin, optional: true 
    belongs_to :user 
    has_one :return 
    has_many :order_shipments, dependent: :destroy 
    has_many :order_items, dependent: :destroy 
    has_many :order_addresses, dependent: :destroy 
    has_many :order_comments, dependent: :destroy 


    ...... 

end 




class OrderShipment < ApplicationRecord 
    belongs_to :order 
end 

私は私のdevelopment.rbとproduction.rb環境に次のコードを追加したのだが、それはペーパークリップをやっている可能性が何かをオーバーライドしているかのような問題を解決するために表示されます。

config.active_record.belongs_to_required_by_default = true 

はしかし、私はこのコードはapplication.rbに行くべきだと思いますが、「設定」のように初期化されていないので、行っているとき、私は次のエラーを取得する:

undefined local variable or method `config' for main:Object (NameError) 
+1

モデルをセットアップする方法と実行したモデルの例を追加できますか? [最小限で完全で検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve)を参照してください。また、最初から新しいプロジェクトを作成する場合は、これが表示されますか? –

+0

私はこれを** belongs_to **親関係と仮定しています。 5.Xでは、aが必須になってデフォルトになりました。しかし、クリップは、** belongs_to **とは異なる何かをしている可能性があります**あなたのモデルのコードを投稿できますか? –

+0

@MichaelDeering私はいくつかのコードを追加しました。あなたの仮定は正しい。 –

答えて

0

まずofftopic:私は強くお勧めし最終的に競合が発生するため、などの予約語をhas_one :returnなどに使用することはできません。この場合

次のような何かをすることはできません。

def some_method 
    # ...some actions 
    return # say, you wanted to return the association. 
end 

あなたはproduction.rbでRailsの設定変数を設定するかdevelopment.rb場合だけではなくconfig.それらのファイル内のRails.application.config.を使用する必要があります。

In the Rails 5 belongs_toは、関連付けにoptional: trueを指定しないかぎり、デフォルトで有効にする必要があります。この場合、あなたの団体belongs_to :adminは検証されません。別のアソシエーションに問題がある場合は、Orderというオブジェクトを他のアソシエーションなしで作成しようとすると、レスポンスをレールコンソールの出力で更新してください。

関連する問題