这个没有死标准,看关联的数据后续还有没有保留的必要,如果没有,就可以直接 dependent: :destroy;如果有,看要不要保留数据里的外键(比如可能用于后续的数据统计分析需要),如果有,就连 :dependent 都不用声明了,所关联数据就不会动了,如果没有,可以声明 dependent: :nullify 将外键置空。
举个例子吧,比如我有一个 CMS 系统,实体有 Page(网页)、Picture(网页上的照片)以及 Visit(网页访问,记录来访用户信息以及受访网页)。一个网页上会有多个照片,同时也会有多个访问记录。一般来说,如果我删除了网页,那么原来网页上的照片也没有留着的意义了,所以我们期待一旦删了网页,也要清除网页上的照片。另一方面,尽管我删除了网页,但是我仍然想要知道整个站点历史访问量情况,包括 PV(要记得访问的是哪个 page,也就是 page_id 外键有必要保留,不能被置空)、UV 等,那么访问记录的数据我是不想随着网页被删而同时被清除的,那么这个业务的代码就是:
class Page < ActiveRecord::Base
has_many :pictures, dependent: :destroy
has_many :visits # 关联数据不声明 dependent,将不会被自动删除
end
事实上,我能想到的关联数据不清除的场景,基本也都是一些有审计用途的数据了。
:D 我之前也写了个类似的帖子,还没有看过的同志们欢迎进入传送门:周末到了,来段代码压压惊
我之前读 excel 文件都是用的 roo,印象中导出没有用过任何 gem,直接用 Office 的 Spreedsheet XML 格式,Railscasts 上也有示例,好处是直接就可以用 erb 模板了,虽然可能繁琐一点,但是胜在直观:
<?xml version="1.0"?>
<!- http://railscasts.com/episodes/362-exporting-csv-and-excel ->
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Sheet1">
<Table>
<Row>
<Cell><Data ss:Type="String">ID</Data></Cell>
<Cell><Data ss:Type="String">Name</Data></Cell>
<Cell><Data ss:Type="String">Release Date</Data></Cell>
<Cell><Data ss:Type="String">Price</Data></Cell>
</Row>
<% @products.each do |product| %>
<Row>
<Cell><Data ss:Type="Number"><%= product.id %></Data></Cell>
<Cell><Data ss:Type="String"><%= product.name %></Data></Cell>
<Cell><Data ss:Type="String"><%= product.released_on %></Data></Cell>
<Cell><Data ss:Type="Number"><%= product.price %></Data></Cell>
</Row>
<% end %>
</Table>
</Worksheet>
</Workbook>
更多介绍可以参考 Wikipedia 的内容: Microsoft Office XML formats: Excel XML Spreadsheet example
这种方式比较繁琐,代码量也多,输出的文件可能也更大(文本文件),需要开发者学习具体的标签跟类型等。但是可以拥有丰富的灵活性,比如样式跟单元格合并之类的,另外不需要任何额外依赖,适合对导出的表格有复杂的格式要求的场景吧。
遗憾,时间冲突,刚好那天有事,精神上支持。
能让人看懂就是好的,我常用来 draw.io
可能会写对一些基础知识的理解性的博客,但这样的内容似乎不适合用做分享
大可不必如此刻意区分,不管是基础还是深入,我相信总会有受众在,或许这个受众也是个新手,也或许是没考虑过你的问题的相对有经验的人。Ruby China 是开放自由的社区,所以抱着开放与交流的心态就好。
#3 楼 @benzheren 哈哈,不客气,好的就强力推荐下而已
好团队,🐂 团队!支持下!哈哈
#12 楼 @hidoos #13 楼 @yingce #14 楼 @betterthornbird #15 楼 @kayakjiang 你们果然都是周末才来看帖的
这不是老早就有了的吗
连个链接都懒得编辑,怀疑楼主的诚意。短短不到三行字,倒是罗列了不少名词。。。
赞!现在好像也就上海那边 Elixir 有 meetup 吧?Tony 哥啥时候来珠三角地区布道?
group.members << "来自广州到优秀的 React 工程师"
错别字
反正我已经点了赞!
#6 楼 @akirapanda 代码比文档好的典范,哈哈
#1 楼 @helperhaps 跟之前的极光推送的那个是异曲同工,不过至少极光那个能跑起来。
对于外包可能真是这样,客户会想,如果这个项目做完,后边又很难找到相同技术栈的人来维护,那他干嘛不一开始就找一个多人用的技术栈呢?
小波真是走遍祖国大江南北啊!
@xifengzhu 话说拍照就好好拍照啊,摸着别人腿是几个意思
沙发!!!
#6 楼 @cisolarix 在 controller action 里边放了个断点 binding.pry。