通过命令导出你在 database.yml 中设置的数据库的表结构,再生成一个可以生成这个表结构的总 migration。
作用的话可以加快你初始化数据库的过程。你挨个跑 migration 的话,除了 create_table 中间会有项目开发中的 rename,remove,add 等操作,而 schema 是直接把这些操作的结果汇总起来。
另外如果您把 schema 纳入了版本控制,那么 diff 一下你就可以知道自己在本地对数据库进行了哪些 migrate 操作。
schema 和 migration 的顺序完全没有关系。有个细节,就是如果你有使用外键约束,那么 add_foreign_key 会在 schema 的最后,防止你创建约束的时候,这个列还没有被生成。你可以看看代码,它是直接通过数据库 dump 命令跑出来的。
mysql
def structure_dump(filename)
args = prepare_command_options
args.concat(["--result-file", "#{filename}"])
args.concat(["--no-data"])
args.concat(["--routines"])
args.concat(["#{configuration['database']}"])
run_cmd('mysqldump', args, 'dumping')
end
pg
def structure_dump(filename)
set_psql_env
search_path = case ActiveRecord::Base.dump_schemas
when :schema_search_path
configuration['schema_search_path']
when :all
nil
when String
ActiveRecord::Base.dump_schemas
end
args = ['-s', '-x', '-O', '-f', filename]
unless search_path.blank?
args += search_path.split(',').map do |part|
"--schema=#{part.strip}"
end
end
args << configuration['database']
run_cmd('pg_dump', args, 'dumping')
File.open(filename, "a") { |f| f << "SET search_path TO #{connection.schema_search_path};\n\n" }
end
http://ruby-doc.org 建议买本《ruby 元编程》看一看
有可能有人自己用 SQL 创建了一张表,或者还没有把新建 migration 提交上来,造成了 schema 和 migrate 不同步的问题。
哭了,装 x 失败的典型反例。你不要老是一知半解就出来秀啊,碰到比你更懂的人不是分分钟就被打脸了吗?
达到 TIOBE 前三可不不容易,要有非常难得的历史机遇才可以的。Ruby 不过是借着 Rails 和 Web 开发的大势小火了一把,能够有现在的排名已经不错了,怎么可能进前三。
你这个解释不错,不光摘掉了我给你扣上的道德绑架的帽子,还能够把自己的境界上升到抑恶扬善这种级别。
这个点不错,完美防御,在下撤退。
事情不完全是你想的这样,你有点偏激了。
在 ruby 社区并不是说不能说 ruby 坏话,而是很多来黑 ruby 的人黑的没有道理,情绪大于理智,所以大家就站出来纠正一下。
要是 ruby 社区真的是你想的那样,自卑不容质疑,也不会又这么多人给你点赞。
据我所知,在 ruby 圈有影响力的人,都会好几门语言。很多都不仅仅是程序员,同时是管理者或者创业者。
大家心态是开放的,不会只抱着 ruby 不放,还会考虑工程甚至是商务上的事情。
至于偏爱肯定是有一点,像 ruby 这样的小众语言,如果不是因为喜欢,那么你又为什么要选择它?
我们喜欢 ruby 的优雅,但是不会上升到信仰这个级别。
你之前的回复我也点赞了,主要是为了提醒自己不要固步自封,多了解一些别的东西。
全栈营的事情,社区也讨论过好几次,主要的声音都是批评的。
说到底,我个人觉得。ruby 圈的人,并没有义务贡献出自己的时间,站出来声讨全栈营。
这都是个人自由,不能上升到道德绑架的层面,你说是吧?
哈哈,队长来个数据库专场来给我们科普一下吧。
值得学习是肯定的,其实光是过一遍 guides 花不了多少时间。作为曾经 github 上 star 数量最多地项目,难道你就没有兴趣来了解一下它的设计吗?
哈哈,我又来水了。
碰到不开心的事嘛,喝点小酒,或者心里暗骂对方几声傻 x 就好。
别人只是态度不好,也没有对你造成严重的损失。目前只有你是被“态度不好”的当事人,其他人是没办法产生共情的。所以你就算了,留着这贴,可能会被人 diss。还有可能会有长者,出来教你一些人生的经验。
楼主是清华学霸?
我来给配点文字
实在要用就在 application_controller 下给 skip_before_action 一个别名。
哈哈。握手。
我看到其他同事用 tmux 也是分割好几个面板,我到现在也还是不喜欢这种用法,依旧一个 window 一个 pane。
自己写插件是不是还得学 emacs lisp
ruby 缺乏很多机器学习裤
穿上可以有特异功能?
前端工程里面看起来像 html 的代码其实是一个模版,会通过 js 渲染出真正的 html 代码,还可以在模版里通过指令来调用框架的一些接口。所以逻辑上讲 js 代码和模版是强耦合的,没必要分开。Vue 的文件那种格式相当于一种语法糖,最终还是编译成纯 js 再进行渲染的。
最好就是不要用 default_scope,如果非要用的话,可以试试这样,但也不是很好。
belongs_to :imageable, -> { unscope(:where) }, polymorphic: true
不是很推荐这么做,就像楼上说的,会导致 includes 无效等杂七杂八的问题。
这个本来的 imageable 方法不是单纯地查找并生成一个关联对象这么简单。而是先通过一个中间对象 ActiveRecord::Associations::BelongsToAssociation 判断下对象是否已经缓存,没有的话再 reset_scope、reload。你通过覆盖这个方法,使原本 ar 设计好的一些东西失效了,得不偿失。而且你本来只是想使 Product 的 default_scope 失效,这样一来,所有 imageable 找出来的 model 全部的 default_scope 都失效了。
原因嘛,就算你问了,可能别人也不会告诉你真实的原因,除非你碰到那种很好的面试官。以前我面过几个还不错的人,我和老大说很厉害,至少比我强吧。其中有一个我们老大说,这人履历和技术都很厉害,我们的项目养不起。另外一个我们领导说,这人看上去比较浮躁,怕不稳定。还有两个因为项目技术方案的调整,本来需要的岗位又不确定了,所以就没有发 offer。这些种种原因当然都不可能放在台面上来说,所以你真不需要多想。
你这么年轻,真的啥都不用担心,借用某大佬的话,下海干活、会所名模,哈哈哈哈。
没事的,兄弟。
如果非要既写 ruby 又要进大厂,那可能除了大疆之外选择真的不多。
你现在可能是要去其他大厂写 C++ 了,想想这未必不是一件好事。
重要的是你在整个职业生涯里的选择和努力,这种一时的面试成与败放在几年这种时间纬度上来看根本不值一提,哈哈。
PS: 据我的观察,rei 自从加入大疆之后,经常半夜两三点钟发帖。
我也很好奇,scope 只是定义了一个查询方法,并不会作为默认查询条件,你是怎么查才导致查出 published 的 product。
js、python、ruby 果然还是最受欢迎的
你还是 too simple,sometimes naive。量子纠缠通讯和墙一样,可都是老大哥手下的产品。
已向宇宙发射坐标,我是执剑人。噢,完蛋了,信号被墙截获没有发出去,没想到墙已经如此强大。
好的创业和好的软件一样,都是一个优秀的实践而不是一个模型。不是被设计出来的,而是不断调整出来的。所以就像道理学再多,也还是过不好人生一样,因为人生是具体的。
你在创业的过程中一定会遇到很多困难,以及和你预想当中不一样的地方,你是如何思考并解决这些问题的。这些具体的经验,走过的弯路,才是对我们来说最有用的东西。
来讲讲吧。
订阅了,好像和 ruby-weekly 不一样,只是 rails 项目的一周更新内容,没有附加的东西。
我看你朋友圈一直在写 Go 啊,还在关注 Rails 吗?
我们是一家专注于帮助普通人获得成功的公司。
很好奇,如何才能帮助普通人获得成功?成不成功不是都只能靠别人自己,你们怎么帮?
呃,这个不是开源项目。开源的应该有吧,只是我暂时没看到。
没用过 active_admin,不知道怎么集成。
自己写的话一般是建立 role 和 feature 两个表,进入 action 之前校验一下权限,或者干脆写一个 rack 中间件。