2017-09-05 8 views
0

私は、2人の親のコミュニティとユーザーを持つモデル(投稿)を作成しました。 今、私は私が今エラーがコミュニティがなければならないことである許可すると、デフォルト値はゼロモデルの列をrails5でオプションにする方法

するヌルcommunity_idのためchange_column_nullとchange_column_defaultを述べ移行を実行してcommunity_idフィールドがまたは満たされるmaynotことが可能かもしれないことを望みます存在するので、私はid = 0のコミュニティをレールコンソールに作成する必要があります。それは良い方法ですか?

または私は以下のコードを次のように間違っていますか?

Post.rb(モデル)

class Post < ApplicationRecord 
    belongs_to :user 
    belongs_to :community 
end 

移行:

class Postcommunityidallownull < ActiveRecord::Migration[5.1] 
    def change 
    change_column_null :posts, :community_id, true 
    change_column_default :posts,:community_id, 0 
    end 
end 

答えて

2

したいbelongs_toオプション:

1)だけで、フィールドの移動には追加しないでください

null: false 

2)モデルの使用

belongs_to :community, optional: true 
+0

thnxしかし、私は誰かのelsesコードで働いています。 テーブルを今更新する方法。私は正しくそれをしたい、他の私のコードはまだうまく働いています –

+1

'community_id'は、実際にはオプションであれば' null'でなくてはなりません。モデルに 'optional:true'を追加すると、将来のレコードにのみ適用されます。既存のものを変更するには、移行が必要です。 'change_column_default(:posts、:community_id、nil)'はこのトリックを行うべきです。 – Vlad

+1

ありがとうUrsus&@Vladそれは働いた! :) –

関連する問題