Rails零星笔记
-
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.