• rake db:migrate会自动创建db/schema.rb,但在production mode下,不会创建db/schema.rb,也不会更新它, 不过数据库还是会正确的把migration的内容做了,schema_migrations表也会顺利更新到最新。

  • Rails中保存的created_at值是Web服务器的时间,不是数据库服务器的当前时间。 测试方法是在两台服务器中都date 一下,并故意通过date 080310042015的方式修改下Web服务器的时间,使得其与数据库时间不一致。 然后在rails console中创建一个对象,如: Menu.create!(name: 'test') ,然后可以看到created_at的值就是Web服务器的当前时间。

  • Rails中的/public/favicon.ico默认的是空的,在加入了本网站的favicon.ico后,在production模式下,启动Nginx,需要配置.conf来显示它。

    $ vim /etc/nginx/conf.d/your_project.conf
    加入
    server {
      location ~* ^/assets/|favicon.ico {
      }
    }
    

Validation

User has_many Groups 如果Group中新加了一个validationS,在User中保存Groups时也会validate到新加的这个validationS.如果验证失败,会报错Groups,具体原因却不提示. 这是rails可以改进的一个方面.

DB

  • DB Index Write like this add_index :sometable, [:some_id], unique: true, where: 'dropped_at IS NULL' can avoid create index on empty data.

  • If you want to change the database, you can use: rails db:system:change --to=postgresql.

Stimulus

https://github.com/stimulusjs/stimulus can be well used for combined frontend and backend projects.