可能是我没见识过足够牛逼的人,但是 @tony612 同学是我见过的已经很有技术水平的人。诚然,技术水平的高低,有一方面也是需要时间的历练,经验的积累,我也相信楼主一定是一个非常牛逼的人。只是对楼主的一些观点不敢苟同:
Block、Meta Programming、Rails.cache 等等这些知识点,只要认真写过项目的人都会得,好么?
我觉得技术还是要跟场景挂钩的,不是每一个认真写过项目的一定会非常熟悉元编程,也不一定一上来就是各种 cache。经验丰富的人可能这些都非常熟悉并且了然于胸,这其中的大牛肯定少不了您啦。但我认为不可能要求面试官直接跳过这些问题,就因为面试者是一个认真写项目的人的这样一个前提。当然,可能是因为我也是菜鸟,所以才会觉得没有面面俱到很正常。
感觉楼主一直在强调所谓的老司机、新手之类的观点,不知楼主为何一定要区分得这么清楚,还得有层次感?我在工作过程中,也面试过很多次其他的面试者,很多也比我年长,工作经验比我丰富,但是我不认为一定得是更牛逼的人才能去面试别人。面试的更多目的在于相互沟通了解,如果当场发现发音不清或者颤音,为何不直接提出意见或反馈呢?
我跟流利说的工程师们也接触过,个性随和,我不觉得会是所谓的“心机”公司,同时也赞下流利说站出来主动正面的态度。也建议楼主平和一下心态,如果你是面试官,如果你对面试候选人一视同仁,不分老鸟新手,你自己是否会有那么大的心理落差。
只是简便语法没啥意义,增加维护成本也增加项目体积,还不如一个实时预览来得便利
在我的实际应用中,每个用户都有一个虚拟货币仓库,为了方便对账,我又建立了一个属于系统的虚拟货币仓库,所有用户的货币发放都通过系统仓库发放,最后整个系统应该是平账。这就要求系统里边有且只有一个系统仓库,这个时候单件类模式就非常有用了。
class CoinWarehouse < ActiveRecord::Base
belongs_to :user
# ...
end
class UserCoinWarehouse < CoinWarehouse
end
class SystemCoinWarehouse < CoinWarehouse
def self.singleton
@singleton ||= (first || create)
end
end
过来支持下!靠谱 leader!
#5 楼 @yours2008 补充下,如果打开类多的话,可以用 decorator 的方式,具体就是 config/application.rb
文件加入配置:
config.to_prepare do
# Load application's model / class decorators
Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
Rails.configuration.cache_classes ? require(c) : load(c)
end
end
这样就可以在启动服务器的时候加载响应文件了:
以我对 ActiveRecord::Base
的扩展为例,相应代码内容为:
# app/decorators/models/active_record/base_decorator.rb
ActiveRecord::Base.class_eval do
def self.query_slave(force = true)
# codes here
result
end
end
华为也有用 Ruby 的
不明白这有什么什么特殊的,如果是后台异步队列,用 sidekiq 或者 resque 或者 delayed_job 都可以啊。短信的话可以用云片、螺丝帽、阿里大鱼或者 LeanCloud 啊,那么多方案。另外,你的问题跟 ios 还有 android 貌似没有任何关系吧。
先检查索引里的值是否正确。
放到 config/initializers/
目录下即可
昵称 Martin_288
公共功能解耦封装成 gem,两个项目都去安装这个 gem。
楼主加油!
过来帮顶! :plus1:
飞飞机,不过肯定不适合在办公室里飞,哈哈~~
好吧,其实应该是多定时起来走动,扭扭脖子之类的,方法很简单,多喝点水,你就需要时不时起来倒水加去洗手间放水,另外可以利用个小工具提醒自己,比如用 crontab 做提醒:
然后效果是这样的:
最后的实际效果是,忙的时候压根不会去关注那个通知。
还有,按摩跟去健身房都是不错的选择,可以对颈部有针对性的练习!
深夜党点个赞
这种文章,茶余饭后消遣即可,没有绝对的好坏,所以不喜欢争论哪门语言好,哪门语言坏,语言只是工具,为需求生,为需求死,哪怕同一个项目,不同的发展阶段,适合的语言都是不一样的。哎,项目还没壮大,我得去写垃圾中的垃圾和垃圾代码了。
都不描述下你的实现构成,单单一句结论,如何诊断?
以前还很喜欢 Spree 项目呢,只是后来没机会用到,关注就少了
#3 楼 @catherine 如果是多对多,你根本不可能通过外键的方式去做关联,你只有一个 parent_id
字段,只能存某一个上家的 id
,你记住了上家 B,就要忘掉上家 A,要记住上家 C,就要忘掉上家 B,始终最多就记录一个,那你还怎么多对多?
#4 楼 @southwolf Spree 之前有这种付费提供额外技术支持,名字忘了,好像是用来提供到其他系统接入的,不过刚才看了下官网,找不到了,可能是经营不好。
原来不是维护得挺积极的吗?突然说停就停了,以后 Spree 代码就只能是用来学习了。
时间比金钱宝贵,如果工作不开心,太累,又没有成长,就赶紧走吧。否则哪怕给你了期权,你还得一直守着。不要等着公司上市,努力成为上市公司捧着股票挖你的大神吧,哈哈。说真的,金钱换不来身心愉悦,何不自在点。
我还以为是 Ruby.光棍 呢,哈哈
#7 楼 @qinfanpeng 第一次加载不会触发 turbolinks 的事件。
#1 楼 @blacktulip 嗯嗯,有经验的人一眼就看出来问题了。
至于说 send 方法能将字符串对象和符号对象接受为方法,send 文档本身就是这么定义,该方法只接受符号对象和字符串对象作为参数,可以认为这是 Object 的方法 send 约定的特有的形式。
只要你传入的参数能够返回 Symbol 对象或者 String 对象就行了,比如:
# 传入这两种类型的字面量
obj.send : my_method
obj.send "my_method"
# 方法返回 Symbol 类型的值
def my_method
: my_method
end
obj.send my_method
这些都是可以的。
关于前面的上下文的问题,建议你去阅读《Ruby 元编程》,里边有关于祖先链以及方法查找的详细例子跟解释。