Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 有关于如何在freemium应用程序中实施限制的提示吗?_Ruby On Rails_Ruby On Rails 3_Limit_Cancan_Restriction - Fatal编程技术网

Ruby on rails 有关于如何在freemium应用程序中实施限制的提示吗?

Ruby on rails 有关于如何在freemium应用程序中实施限制的提示吗?,ruby-on-rails,ruby-on-rails-3,limit,cancan,restriction,Ruby On Rails,Ruby On Rails 3,Limit,Cancan,Restriction,我是一个努力编程的新手,试图制作一个有多个可用计划的freemium风格的应用程序 我正在使用cancan gem来分配场馆角色,具体取决于他们的计划(免费、高级、高级+) 我知道如何根据分配的计划限制视图中显示的某些选项,但如何根据分配的计划限制添加到场馆的记录数 e、 g 我希望所有场地都有照片,但免费场地应该是 仅限3人 我还希望所有场馆都有可搜索的标签,但允许的标签数量根据场馆所在的计划而变化 目前,这些计划仅在场馆模型中指定为: PLANS = %w[free premium pr

我是一个努力编程的新手,试图制作一个有多个可用计划的freemium风格的应用程序

我正在使用cancan gem来分配场馆角色,具体取决于他们的计划(免费、高级、高级+)

我知道如何根据分配的计划限制视图中显示的某些选项,但如何根据分配的计划限制添加到场馆的记录数

e、 g

  • 我希望所有场地都有照片,但免费场地应该是 仅限3人
  • 我还希望所有场馆都有可搜索的标签,但允许的标签数量根据场馆所在的计划而变化
目前,这些计划仅在场馆模型中指定为:

PLANS = %w[free premium premium+]
编辑

多亏了亚历克斯·皮蒂的回答,我想我现在走上了正确的道路

我将创建时的行
validate\u:photo\u count\u in\u limit
更改为:

validate :venuephoto_count_within_limit, :on => :create
但是我在VenuesController的更新中遇到了一个ArgumentError:将Fixnum与nil进行比较失败的错误

另一次编辑

现在一切都好了,只是做了以下更改:

def photo_limit
  {:free => 3, :premium => 10}[plan.to_sym]
end


谢谢你的帮助,非常感谢

在我当前的项目中,我们有同样的问题。我没有参与这一部分,所以我不知道它是如何解决的。可能在ApplicationController上使用某种全局过滤器来检查用户当前计划/子计划(是的,我们也有子计划)的权限


周一,我将试着抽出一些时间来检查我们如何实现这一点,并回答您。

在我当前的项目中,我们有相同的问题。我没有参与这一部分,所以我不知道它是如何解决的。可能在ApplicationController上使用某种全局过滤器来检查用户当前计划/子计划(是的,我们也有子计划)的权限


周一,我将试着抽出一些时间来检查我们是如何实施的,并回答您。

我将给出
photo\u limit
tag\u limit
等的场馆模型方法

class Venue < ActiveRecord::Base

  def photo_limit
    {:free => 3, :premium => 20, :"premium+" => 999}[plan]
  end

end

我将给出
照片限制
标签限制
等的场馆模型方法

class Venue < ActiveRecord::Base

  def photo_limit
    {:free => 3, :premium => 20, :"premium+" => 999}[plan]
  end

end

嗨,谢谢你的迅速回复,这正是我想要的。虽然我对.plan方法的假设有点困惑,但我在VenuesController中得到了一个无方法错误编辑:
未定义的方法
validate_on_create',因为`我曾假设你可以做类似于
@my_vention.plan
的事情,并得到“免费”(或任何)返回我认为validates_on_on_create在rails 3中有所贬值,我将行更改为
validate:venuephoto\u count\u injust\u limit,:on=>:create
,但现在得到的是“Fixnum与nil的比较失败”。您好,感谢您的快速响应,这正是我想要的。虽然我对.plan方法的假设有点困惑,但我在VenuesController中得到了一个无方法错误编辑:
未定义的方法
validate_on_create',因为`我曾假设你可以做类似于
@my_vention.plan
的事情,并得到“免费”(或任何)返回我认为validates_on_on_create在rails 3中有所贬值,我将行更改为
validate:venuephoto\u count\u in_limit,:on=>:create
,但现在得到的是“Fixnum与nil的比较失败”。你不能通过这里描述的CanCan能力来实现吗?难道你不能通过这里描述的CanCan的能力来实现它吗?我今天晚上做。等一下,今晚我来做。等等
class Photos < ActiveRecord::Base

  belong_to :venue
  validate_on_create :photo_count_within_limit

  def photo_count_within_limit
    if self.venue.photos(:reload).count >= self.venue.photo_limit
      errors.add(:base, "Exceeded venue photo limit")
    end
  end

end