支持一下,很靠谱的公司。
跟着大师混没错的💪
还清晰的记得这个问题抛出来的时候,我答非所问,失了方寸去解答时的样子。回来之后,花了一段时间才真正去解决这个问题。
module Validate
VALIDATE_RULES = {
:presence => {
:condition => /^\S+$/,
:message => "%{name} cannot be blank"
},
:maxlength => {
:condition => -> (attr, val){ attr.to_s.length <= val },
:message => "%{name} max length is %{val}"
}
}
def self.included(base)
class << base; attr_accessor :defined_validates; end
base.defined_validates = {}
base.send(:include, InstanceMethods)
base.extend ClassMethods
end
# def self.extended(base)
# class << base; attr_accessor :defined_validates; end
# base.defined_validates = {}
# base.extend ClassMethods
# base.send(:include, InstanceMethods)
# end
module ClassMethods
def inherited(base)
base.defined_validates = defined_validates.deep_dup
super
end
def validates(name, options)
defined_validates[name.to_s] = options
end
end
module InstanceMethods
def valid?
@error_messages = {}
self.class.defined_validates.each do |name, conditon|
conditon.each do |rule, value|
next unless value
rule = VALIDATE_RULES[rule]
cond = rule[:condition]
attr_value = send(name)
valid = case cond
when Regexp
cond === attr_value
when Proc
cond.(attr_value, value)
end
@error_messages[name] = rule[:message] % {
name: name,
val: value
} unless valid
end
end
@error_messages.size == 0
end
def error_messages
@error_messages || {}
end
end
end
class User
include Validate
# extend Validate
attr_accessor :name
validates :name, :presence => true, :maxlength => 5
def self.create(options = {})
user = new.tap do |_|
options.each do |attr, value|
_.send("#{attr}=", value)
end
end
end
end
user = User.create(:name => nil)
user.valid?
user.error_messages
不继承于任何类,所以只能用 include 或 extend 的方法。这里写一个 Validate 的 module,这样任何类只要 include 或 extend 它就有了 validates 的功能了。 实现: validates 是用来验证一个类的实例的,所以我们只要把 validates 的验证条件存在类的变量就可以了
def validates(name, options)
defined_validates[name.to_s] = options
end
这里有个类变量叫 defined_validates 通过钩子方法把我写好的方法变成了对应类的类方法和实例方法
def self.included(base)
class << base; attr_accessor :defined_validates; end
base.defined_validates = {}
base.send(:include, InstanceMethods)
base.extend ClassMethods
end
我们把我们定义的 InstanceMethods 中的所有方法 include 了,成了实例方法 定义的 ClassMethods 中的所有方法 extend 了,成了类方法
class << base; attr_accessor :defined_validates; end
base.defined_validates = {}
这个只要是定义类变量,就是@@defined_validates,并且初始化,后面在 User 中我们的 validates 其实就存在这个变量中的 我们在使用 valid 的时候,再进行判断就可以了,然后再把判断结果输出到实例变量@error_messages中
无二是个好公司,自己还有很长的路要走。
投了 简历写的太 low 了吧 没有面试机会
郑州还不错,有 4 5 家 ruby 公司呢
好嘞,我投递一下。
好的,已投递,您看一下。
想问一下可以远程进行面试吗?现在人在北京。
会。
这家公司很棒!
最后,别忘记关注 "技术达人李亚飞" 公众号,推荐给你的朋友们反思与成长。
哈哈哈哈哈 好可爱
噢噢 ~
那就好。你前面报 TypeError, 是不是你邮件配置中的 port => :465 了?
在服务器上 ping 下你的邮件配置中的 address
domain => 'mydomain.com' 。另外,你看下你本地环境能发吗?自己排除下是否是网络问题。
把你服务器配置的 domain 贴出真实的地址,因为你现在是错的,不知道你实际配的对不对。
看你的日志,应该不是服务器配置的问题,你看下是否是网络问题。
大哥,你试下我的配置呗
这样配置试一下:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.mxhichina.com',
port: "25",
domain: 'qiye.aliyun.com',
user_name: '[email protected]',
password: 'zenmekenenggaosuni',
authentication: :login
}
你看下是不是 nginx 把样式文件当成纯文本来加载了
如果你初出茅庐我们能为你提供学习锻炼的机会
现在经验不是很长的 ruby 工程师也有面试机会吗?
那时候转了 ruby 之后,在知乎回了个帖子,知乎上的回答,讲述了自己 ruby 的经历。当时对 ruby 感觉是未知,带有一点新奇,还有一丝兴奋夹杂着。因为感觉要重新开始一段“弄懂了一个知识点,实现一个功能点,内心的状态是'兴奋的时刻'”,实际上就是如此。那时候每天都记录博客,每每完成了一个博客感觉今天过得很充实,那是做 java 之后好久没体会的感觉。怎么说呢,我总是说自己做了 3 年 java,但是感觉自己是 java 中下水平的程序员,当时我的工作只局限于 web,也没往当时比较火热的大数据方向研究。做 java 的日子里,生活过的比较清闲,早上 9 点半上班,晚上 5 点 20 下班,早上有班车,距离公司也很近,到点下班,上班期间感觉是有充足的时间去聊 QQ 的。
直到在地铁里遇到我的一个校友。他是出来之后找 java 的工作,公司需要他们转 ruby,他就转了,从此他在 ruby 的道路上走着。遇到他之后,我就想着趁着业余时间学一学吧,因为吃完晚饭 6 点半就到家了,我就开始跟一个在 QQ 上认识的一个老师学习 ruby,跟着他的在职课程学习的,那段时光,到今天想想,还是挺美好的,也认识几个不错的 ruby 小伙伴。我觉得相对于 java 来说,首先 ruby 这个社区是个高质量的社区,起码是我遇到过的。里面有 Rei、姜军等优秀的人,社区里的其他人的思想都挺高。我还记得 Rei 在他的一篇博客上写到“我觉得 Ruby 好的地方,是它被设计为让程序员快乐。Ruby 有很多便利的语法,但语法很容易被别的语言借鉴,唯有它的理念独树一帜。Ruby 一直让我觉得编程很快乐。”,感觉自己从此成了 Rei 粉,也想着成为他这样优秀的人。其次 ruby 与 java 相比,真的太简洁了,做 java 的时候想着我只要实现功能就好了,我只要完成任务就好了,做了 ruby 之后除了包含实现功能,还有去优化代码,让代码更加简洁,这得益于现在公司一个 10 年 ruby 的大牛的指导,跟着他学习了很多。
我是降薪才找到了 ruby 的工作,我想着如果不转,我的人生会有遗憾,如果不行大不了重头再来呗。所以辞职之后我是没有投递 java 的岗位,直接去找的 ruby。我想着只要给个好的学习机会,我是可以放弃这一些的。转眼之间做了 ruby 也有一年多了,兴奋感减少了很多,但是还是喜欢 ruby,它不单单带给我工作中的愉悦,也点燃了我的技术热情,让我在原有工作基础上,去学习 Elixir 和 React,让我平凡的日子里过的充实、有力量。
当时看 Rei 聊到了《黑客与画家》,我就去买了这本书。以后的我也会这样做的:“就算有一天没有公司招聘 Ruby 了,我也只会选择更强大的语言,而不是大部分人选择的语言。”
我想去试试。
虽然没要我,但是还是很喜欢这家公司。
我刚学 rails 的时候,也是看的安道老师的电子版,把项目敲了一遍,又加上了自己想实现的一些功能,感觉对 rails 理解了很多。阿里嘎逗。
前台小姐姐是挺漂亮的
五十音大概过一下,然后看每课后面的日语单词,不会的假名去看五十音怎么读,这样反复下来自然而然就会了。然后初学者学习的话就从标日开始学,打好基础,我就是这样一步一步过来的。