小编Mat*_*oti的帖子

当我运行`rails server`时,如何让'puma'自动启动(就像Thin一样)

通常,当你运行rails server它时,启动Webrick.如果您安装'thin'宝石,那么'thin'会启动.我想用'puma'服务器做同样的事情.

我看到startrailties(lib/rails/commands)中的命令调用super,但我找不到'super'的各种选项.我还在'thin'中回顾了许多对Rails的引用.

我从2008年10月发现了一个名为"添加对脚本/服务器的精简支持.#488 [Bob Klosinski]"的Changelog条目,但该代码区域自该提交后发生了重大变化(a93ea88c0623b4f65af98c0eb55924c335bb3ac1).

如果有人可以将我引导到正确的代码部分,那将非常有帮助.

ruby-on-rails puma

29
推荐指数
3
解决办法
2万
查看次数

Rails:如何限制has_many关联中的项目数(来自Parent)

我想限制关联中的项目数.我想确保用户没有超过X物品.这个问题之前被问过,解决方案在孩子身上有逻辑:

提供的解决方案(针对类似问题):

class User < ActiveRecord::Base
  has_many :things, :dependent => :destroy
end

class Thing <ActiveRecord::Base
  belongs_to :user
  validate :thing_count_within_limit, :on => :create

  def thing_count_within_limit
    if self.user.things(:reload).count >= 5
      errors.add(:base, "Exceeded thing limit")
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

硬编码的"5"是一个问题.我的限制根据父级更改.物品集合知道相对于用户的限制.在我们的例子中,管理员可以调整每个用户的(物联网)限制,因此用户必须限制其收集的物品.我们可以让thing_count_within_limit请求其用户的限制:

if self.user.things(:reload).count >= self.user.thing_limit
Run Code Online (Sandbox Code Playgroud)

但是,这是Thing 的很多用户反省.多次调用用户,特别(:reload)是对我来说是红旗.

对更合适的解决方案的想法:

我认为has_many :things, :before_add => :limit_things会起作用,但我们必须提出一个例外来阻止链条.这迫使我更新things_controller来处理异常,而不是的Rails约定if valid?if save.

class User
  has_many :things, :before_add => limit_things

  private
  def limit_things
    if things.size >= thing_limit …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails callback associations

18
推荐指数
3
解决办法
1万
查看次数