I have a model `Listing` that `belongs_to :user`. Alternatively, `User` `has_many :listings`. Each listing has a category field that classifies it (*dogs*, *cats*, etc). The `User` also has a boolean field called `is_premium`.

Here is how I am validating the category...

```
validates_format_of :category,
                    :with => /(dogs|cats|birds|tigers|lions|rhinos)/,
                    :message => 'is incorrect'

```

Let's say I only want to allow premium users to be able to add *tigers*, *lions*, and *rhinos*. How would I go about this? Would it be best to do it in a `before_save` method?

```
before_save :premium_check

def premium_check
  # Some type of logic here to see if category is tiger, lion, or rhino.
  # If it is, then check if the user is premium. If it's not, it doesn't matter.
  # If user isn't premium then add an error message.
end

```

Thanks in advance!