我是一个苦苦挣扎的编程新手,并试图制作一个具有多种计划的免费增值风格应用程序。
我正在使用 cancan gem 来根据场地的计划(免费、高级、高级+)来分配角色。
我知道如何根据分配的计划限制视图中显示的某些选项,但是如何根据分配的计划限制添加到场所的记录数量?
例如
- 我希望所有场地都有照片,但免费场地应仅限于 3 个。
- 我还希望所有场地都有可搜索的标签,但允许的标签数量取决于场地所在的计划。
目前,这些计划只是在场地模型中指定为:
PLANS = %w[free premium premium+]
编辑
感谢 Alex Peattie 的回答,我认为我现在走在了正确的轨道上。
我将行更改validate_on_create :photo_count_within_limit
为:
validate :venuephoto_count_within_limit, :on => :create
但是在 VenuesController#update 中出现 ArgumentError:Fixnum 与 nil 的比较失败错误。
另一个编辑
所以现在一切都很好,只需进行以下更改:
def photo_limit
{:free => 3, :premium => 10}[plan.to_sym]
end
和
validate :venuephoto_count_within_limit, :on => :create
感谢您的任何帮助,非常感谢!