The advantage of splitting responsibility and testing into separate controller and model concerns becomes even clearer as we add another requirement. Let’s allow for the possibility of administrative users who can see any project, as well as public projects that can be seen by any user.
We’ll want to represent these properties in the database—in this case, we’re doing the design work based on planning our test. We’ll generate a migration using the command rake generate migration add_public_fields, which gives a skeleton file. Add the following and then run rake db:migrate.
class AddPublicFields < ActiveRecord::Migration