通常,当你运行rails server
它时,启动Webrick.如果您安装'thin'宝石,那么'thin'会启动.我想用'puma'服务器做同样的事情.
我看到start
railties(lib/rails/commands)中的命令调用super,但我找不到'super'的各种选项.我还在'thin'中回顾了许多对Rails的引用.
我从2008年10月发现了一个名为"添加对脚本/服务器的精简支持.#488 [Bob Klosinski]"的Changelog条目,但该代码区域自该提交后发生了重大变化(a93ea88c0623b4f65af98c0eb55924c335bb3ac1).
如果有人可以将我引导到正确的代码部分,那将非常有帮助.
我想限制关联中的项目数.我想确保用户没有超过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)