#6 楼 @chenge turbolink 之后整站成了个单页应用,意味 js 逻辑不会自动释放,有内存泄漏的可能。
所以写页面逻辑除了要考虑什么时候执行,还要考虑离开的时候释放。所以会有类似代码:
$(document).on 'page:load', ->
if page is scrollPage # pseudo code
$(window).bind 'scroll', customScrollFunction
$(document).one 'page:change', ->
$(window).unbind 'scroll', customScrollFunction
https://github.com/rails/turbolinks/issues/154#issuecomment-11916707
这值得再写一篇文章了,我也是摸索中。
提个方案,像 StackOverflow 那样,新手发帖先进入一个发帖指导的页面,打勾下一步才是发帖页。
已发的贴,管理员觉得没有做好功课的,可以移到不显示在主题列表的 notpoint 节点。
广告 spam 是另一个层面了,注册加 captcha,特定的人肉 spam 就加关键词黑名单。
#2 楼 @newnewnew 一般就那样设计,海量之后会各种拆,真到了海量再考虑。
def store_dir
"upload/#{model.photographic.class.name.downcase}/#{model.photographic_id}"
end
.alert class=("alert-#{key}")
之前一份工作由于 migration 和 schema 没注意维护一致性,新人加进来搭建开发环境没一天都不行,跑通之后就不敢动了只做自己负责的部分。
我庆幸我学 Rails 的时候是一张白纸,所有 Rails 提供的我都接受了,然后再思考我需要的是什么。
在生产环境人工操作,楼主很有勇气。
https://github.com/rails/strong_parameters
把参数过滤放到 Action,这个插件是 Rails 核心小组维护的。
我现在不用 attr_accessible 了,用 gem 'strong_parameters',Rails 4 内置。
#2 楼 @sforce100 之前已经这样用了,这就是 Ruby 里面 Module 的用法
https://github.com/ruby-china/ruby-china/tree/master/app/models/mongoid
Concern 只是把这种用法提炼成模式。
1、“那么 model,controller 需要定义共用函数”
这不太正常,一件事要不在 model 做,要不在 controller 做。
concern 用在 model 和 model、controller 和 controller 共享代码。
2、Controller 和 helper 共用,有个 helper_method 宏。
全局都要用的逻辑,抽取成库,比如 Nokogiri。
我这可以啊
User.where("profile.name" => /rei/i).first
=> #<User _id: 50c449……
mongoid 3.0.19
Record.where(state:"checking").where("checkins.behave_id": "...." )
引号
#7 楼 @gelihai1991 就是 migrate 任务写重了,change = up + down。
当前数据库状况可以打开 db/schema.rb 看看。
#5 楼 @gelihai1991 虽然已经删掉了 change,但是数据库结构已经被写进去了,开发环境下修正这个错误,可以用这个
rake db:migrate:redo STEP=1
重跑最后一次 migrate 任务。不过这样会丢失数据,生产环境不能这样做,只有新增 migrate 修正了。
#5 楼 @gelihai1991 脏数据。可以进控制台操作
rails c
> LineItem.where(:quantity => nil).update_all(:quantity => 1)