There is no public column here. So this is not overwriting anything I can think of.

A discussion would not have it's privacy set when it is new, and leaving the choice for the user  (or the group admin). There is a validator so we don't save without a value.

When you change a group to 'private_discussions_only' then all discussions will act as private.. If you change the setting later, and allow public discussions, then discussions will retain their original private value (meaning you could close off a subgroup for a week and restore it later)

Rails provides private? which only gives true, false (converting nil to false)

Great questions!