你说的点我都考虑过,因为列表接口内的权限控制是必不可少的,加个详情页的接口并不能方便做权限,反而要额外做权限。
前端处理简单点,事实上返回的数据接口只是从原来的处理方式只是外面套了一层 [],这一点工作量确实后端有必要去额外写一个接口吗
data: {}
变成了
data:[{}]
找一架规模足够小的公司,你就能成为全栈
我遇到过这种问题 ruby 生成文件的时候出现这个 用 Encoding.default_internal = nil
解决的
可能 railsboy 都没有了吧
要找肯定能找到 不过任然需要反馈错链的问题
你可以看 wiki 里面的 rvm 使用指南,按照流程走完 你系统里面就装好了 rvm 和 ruby 然后再去 rails guide 里面开始搞就没啥问题了
马太效应的牺牲品
其实就是污染当前的作用域,
本来你的作用域里面只有这几行代码,定义了哪些变量,清清楚楚,但是你 load 了以后相当于在这个作用域了多了几行代码,结果就是,你 load 里面定了一个方法,和这个作用域里的方法重名了,导致某些变量和预期不一致,比如本来应该继承来的方法,有可能被 load 进来的方法名给覆盖了
语言只是工具,你随便招一个愿意转的让他转 ruby 就好了,毕竟大部分招 ruby 开发的岗位 其实招的的是并不是 ruby 开发 而是 ruby 使用者
https://3cwork.com/discussions/12759 下给了 薪资范围为:8k-15k
知道怎么 自动给 PR 添加标签吗,我看到有自动给 issue 添加 label 的,但是不知道 PR 行不行
写了个 benchmark,如果只判断存在的话 present 最慢。 判断完存在还要做别的事的话,present? 其实是最快的。因为 exists any 需要额外 hit 数据库,所以 present 基本上好用一些,只判断存在性而不做其他操作的情况很少。
Benchmark.ips do |x|
x.report("present?") do
10000.times do
obj = Employee.where.not(deleted_at: nil)
obj.present?
end
end
x.report("any?") do
10000.times do
obj = Employee.where.not(deleted_at: nil)
obj.any?
end
end
x.report("exists?") do
10000.times do
obj = Employee.where.not(deleted_at: nil)
obj.exists?
end
end
x.report("present? and pluck id") do
10000.times do
obj = Employee.where.not(deleted_at: nil)
obj.present?
obj.pluck(:id)
end
end
x.report("any? and pluck id") do
10000.times do
obj = Employee.where.not(deleted_at: nil)
obj.any?
obj.pluck(:id)
end
end
x.report("exists? and pluck id") do
10000.times do
obj = Employee.where.not(deleted_at: nil)
obj.exists?
obj.pluck(:id)
end
end
x.compare!
end
Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use 看样子你本机的 80 端口已经被别的服务给占用了
投了简历 没有回应,感觉像是雾件
ruby 最开始就是 matz 自己玩的语言,被别人拿来做生产工具 他也没想到
那个 是 In deamand 不是需求量大,而是岗位少,做的人更少的必然结果,要说流行,国内 golang 怎么也不可能超过 java php 的
真讨厌,付费 + 邀请好友,我既没有钱,也没有朋友
问一下 ruby 的工作是全栈 还是前后端分离的
我差点以为是招聘帖,白激动了一下午
签合同是和哪个单位签
假设你有一个 children 方法,可以返回当前节点的所有子节点
def descendants
children.each_with_object(children.to_a) {|child, arr|
arr.concat child.descendants
}.uniq
end
# 假设当前借点是root 调用方法就是 root.descendants,这里返回的对象是AR数组,所以可以继续调用rails的方法
其实这里你没有必要自己做 有一个 gem acts_as_tree 帮你做这个功能
或者你觉得在内存里面做这个不是很效率,如果你用的是 PGSQL 的话,也可以直接用 WITH RECURSIVE 方法来把查询的事交给数据库去做
#
def descendants(*fields)
subfields = fields.map { |e| "tablename.#{e}" }
ApplicationRecord.connection.execute("
WITH RECURSIVE descendants(#{fields.join(',')}) AS (
SELECT #{fields.join(',')} FROM tablename WHERE id = #{id}
UNION
SELECT #{subfields.join(',')} FROM tablename JOIN descendants ON tablename.parent_id = descendants.id
)
SELECT * FROM descendants;
")
end
# 传入的参数是你需要返回的字段,假设你用parent_id 去表示你的employee 的父子关系 ,这个方法返回的数组,所以不能调用rails的方法
规范主要是为了风格统一,让后来的人能够更轻易的理解代码,所以一套项目里面只要一套规范就好了,
按天领,黑的漂亮啊,难道工资是日结的吗
def itoa(num)
arr = (1...2*num).map do |e|
i = e > num ? 2 * num - e : e
end
arr.shift
arr.cycle
end
arrr = itoa 5
counter = 0
str = "*"
puts str
loop do
counter += 1
puts str * arrr.next
break if counter == 20
end
str = '*
**
***
****
*****
****
***
**
*
'
puts str
拿去用吧,清晰明了。绝对不存在看不懂的问题
to_s = lambda { |x| x + 1}
b = [1,2,3].map(&to_s)
p b
因为 A 开头的单词会排在列表前面
不行,下划线在 ruby 里面代替可被忽略的参数,用来让你的代码更具有可读性 但是你可以
[1,2,3].map {|_| _+1}
[1,2,3].map(&:to_s)