f.input 里要把 multiple: true
传进去。
不然构造出来的参数就是 category_list
而不是正确的 category_list[]
,如 Log 所示 Rails 会将它处理为 "category_list"=>"第二条评论"
。
其实就是有个 Helper 里定义了 Delegation,把 Controller 里的一些方法都 delegate 到 View Helper 里。
delegate :request_forgery_protection_token, :params, :session, :cookies, :response, :headers,
:flash, :action_name, :controller_name, :controller_path, :to => :controller
如果你要问为什么这里会拿到 controller,原因是 view 和 controller 互相持有引用,并且 view 的上下文就是由 controller 决定的,所以你能拿到 controller 里设置的实例变量。
实际上要取到 Controller 的名字也可以通过 params[:controller]
来拿到,这个是由路由产生的,同时可以拿到的还有 params[:action]
。
在 3.x 的时候已经被拆出一个单独的 Rubygem,如果你需要用可以在 Gemfile 里加上
gem "rspec-its"
Github 地址 https://github.com/rspec/rspec-its
听半小时广告能换来一次自助餐还是值得的
我们暂定是 31 号 14:37 的车走,还有其他小伙伴加入吗?明天我们就买票了
#7 楼 @hooopo 不需要在服务器上做 rehash,项目里用到的可执行文件,最好都binstubs(power by bundler)出来,这样在哪调用都可以正确地引用到对应的 Gemfile。
看到大家的回帖急死我了,楼上的同学都没认真读过 Sidekiq 的文档。
@loveltyoic 这里最合适的做法应该是使用 Sidekiq 提供的Server Middleware
Server Middleware 的类似 Rack Middleware,它是在一个 Worker 执行 Job 时,提供外层注入一些逻辑。Sidekiq 基于此实现了
在我们公司的一个项目是里加入了这样一个 Middleware
module Middleware
class JobMonitor
def call worker, msg, queue
ActiveSupport::Notifications.instrument("background_job.process", msg.dup) do
yield
end
end
end
end
这里通过 AS::Notifications 把这里发生的事情发布出去,然后另外一个地方会进行 subscribe,负责发送 Job 的执行情况到我们的数据收集系统里。
楼主你的代码可以简单实现成这样,Job 那部分不用改动
# lib/job_logger.rb
class YourJob
def call worker, msg, queue
yield
put_your_log_opertation_here
end
end
# config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
config.server_middleware do |chain|
chain.add JobLogger
end
end
与 Array 类似的情况
var a = "abc"
var b = a
a = a + "d" // "abcd"
b // "abc"
a // "abcd"
需要为你当前用户赋予创建数据库的权限
alter role {your_username} createdb
如果你用的是 Mac,通过PostgresApp安装的话,你连用户名密码权限啥都不用指定。
强力推荐
这种情况很适合用 bitmask
的确是个 Bug :plus1:
这个改动被 https://github.com/rails/rails/commit/5e7d6bba79393de0279917f93b82f3b7b176f4b5 干掉了,但是没弄干净。在 railties/lib/rails/engine/configuration.rb
里没有把这句 Revert 回来。
paths.add "config/routes.rb"
#=> paths.add "config/routes"
大哥,去提交一个 Pull Request 吧,然后你就是 Rails 的 Committer 了。
这个更新就是给出一个方法去调用,然后加载配置文件。与你在 Rails 3 里写的等价的效果是
draw :admin
draw :books
config/routes.rb
也是一个配置文件,为什么要纠结于自己修改paths['config/routes']
来处理这个事情呢?
新的版本里官方加了加载某个路由文件的功能,具体用法如下
draw :admin #=> 加载 config/routes/admin.rb
这个改动其实早在 2012 就 Commit 进去,但好像是 Rails 4 才合并进来。改动地址如下
https://github.com/rails/rails/commit/6acebb38bc0637bc05c19d87f8767f16ce79189b
链接到 Github 文件的某一行可以点击文件的行号,浏览器的地址栏就会加上行号的锚点。
加一些判断在 Middleware 中,比如通过 URL 判断env['PATH_INFO']
类型的问题,丢个 String 进去会查不到东西的
User.last.c_at.class #=> ActiveSupport::TimeWithZone
User.last.c_at.iso8601.class #=> String
查询的方法也有点问题,应该是这样
User.where(:c_at.gt => Time.parse(User.last.c_at.iso8601))
这样就对了。