Я новичок в программировании и пытаюсь сделать приложение в стиле freemium с несколькими доступными планами.
Я использую камень cancan, чтобы назначить объектам роль в зависимости от того, на каком плане они находятся (бесплатный, премиум, премиум +).
Я знаю, как можно ограничить отображение определенных параметров впросмотры в зависимости от того, какой план назначен, но как я могу ограничить количество записей, добавляемых в место, в зависимости от того, какой план назначен?
например,
- Я хотел бы, чтобы все местаиметь фотографии, но количество свободных мест не должно превышать 3.
- Я бы также хотел, чтобы на всех местах были теги с возможностью поиска, но количество разрешенных тегов менялось в зависимости от того, на каком плане место проведения.
В настоящее время планы указаны в модели объекта следующим образом:
PLANS = %w[free premium premium+]
edit
Благодаря ответу Алекса Питти, я думаю, что яСейчас я на правильном пути.
Я изменил строку validate_on_create :photo_count_within_limit
на:
validate :venuephoto_count_within_limit, :on => :create
, но получаю ArgumentError в VenuesController # update: сравнение Fixnum с ошибкой nil fail.
еще одно редактирование
Так что теперь все хорошо, просто внесли следующие изменения:
def photo_limit
{:free => 3, :premium => 10}[plan.to_sym]
end
и
validate :venuephoto_count_within_limit, :on => :create
Спасибо за любую помощь, она очень ценится!