Ruby on rails 如何制作模型&x27;rails5中的s列可选

Ruby on rails 如何制作模型&x27;rails5中的s列可选,ruby-on-rails,ruby,Ruby On Rails,Ruby,我创建了一个模型(post),它有两个父社区和用户。 现在我希望community\u id字段可能会被填充,也可能不会被填充,所以我运行了一个迁移,声明change\u column\u null和change\u column\u default允许community\u id的null,默认值为零 现在的错误是社区应该存在,所以我应该在rails控制台中创建一个id=0的id社区,这是一个好的实践吗 或者我在下面的代码中做了一些错误的事情,允许null true Post.rb(模型) c

我创建了一个模型(post),它有两个父社区和用户。 现在我希望
community\u id
字段可能会被填充,也可能不会被填充,所以我运行了一个迁移,声明
change\u column\u null
change\u column\u default
允许
community\u id
的null,默认值为零

现在的错误是社区应该存在,所以我应该在rails控制台中创建一个id=0的
id
社区,这是一个好的实践吗

或者我在下面的代码中做了一些错误的事情,允许null true

Post.rb(模型)

class Post
迁移:

class Postcommunityidallownull < ActiveRecord::Migration[5.1]
  def change
    change_column_null :posts, :community_id, true
    change_column_default :posts,:community_id, 0
  end
end
class Postcommunityidallownull
当您想要一个属于您的可选
时:

1) 只是不要在字段的迁移中添加

null: false 
2) 在模型使用中

belongs_to :community, optional: true

当您想要一个可选的
属于\u时

1) 只是不要在字段的迁移中添加

null: false 
2) 在模型使用中

belongs_to :community, optional: true

thnx,但我正在处理别人的代码。现在如何更新表。我想做得很好,否则我上面的代码仍然可以正常工作
community\u id
应该是
null
而不是0,如果它确实是可选的。如果将
可选:true
添加到模型中,则它将仅适用于将来的记录。要更改现有的,您需要迁移<代码>更改\u列\u默认值(:posts,:community\u id,nil)
应该可以做到这一点。很荣幸,先生;)thnx,但我正在处理别人的代码。现在如何更新表。我想做得很好,否则我上面的代码仍然可以正常工作
community\u id
应该是
null
而不是0,如果它确实是可选的。如果将
可选:true
添加到模型中,则它将仅适用于将来的记录。要更改现有的,您需要迁移<代码>更改\u列\u默认值(:posts,:community\u id,nil)
应该可以做到这一点。很荣幸,先生;)