2017-09-05 20 views
0

我創建了一個模型(後)有兩個父母社區和用戶。 現在我想這可能是community_id字段可能會或可能不會被填充,所以我運行遷移說明change_column_null和change_column_default爲允許community_id的null和默認值爲零如何使一個模型的列在rails5中可選

現在錯誤是社區應該存在,所以我應該在軌道控制檯中創建id = 0的社區,這是一個很好的做法嗎?

或我在下面的代碼中做錯了什麼,允許null爲真?

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'而不是0。如果在模型中添加'optional:true',它將僅適用於將來的記錄。要改變現有的,你需要一個遷移。 'change_column_default(:posts,:community_id,nil)'應該做的。 – Vlad

+1

感謝Ursus&@Vlad它的工作! :) –

相關問題