龙年行大运
user = User.find(6) user.update_attribute(:name,"fuck") 或者 user.update_attributes({:name=>"fuck"})
update_attribute 不行吗?
#定义config
CONFIG={"A"=>["M1"],"B"=>["M2"]}
#module块
module M1
def a
puts "this is M1 on A"
end
end
module M2
def a
puts "this is M2 on B"
end
end
module M3
def a
puts "this is M3 on C"
end
end
#include负责向类(的实例)追加功能,而extend则只向某特定的对象追加模块的功能.
#这里修改父类
class Object
def self.load_config_module
CONFIG[self.to_s].each do |module_name|
eval("extend #{module_name}")
end if CONFIG && CONFIG[self.to_s]
end
end
#类
class A
def self.inherited
load_config_module
end
end
class B < A
end
class C < A
end
puts "======A========"
A.a
puts "======B========"
B.a
puts "======C========"
C.a
#结果
$ ruby testrb.rb
======A========
this is M1 on A
======B========
this is M2 on B
======C========
this is M3 on C
做 PaaS 需要咋样的成本
你刚才的代码里
class B < A
load_config_module
def a
puts 'b-a'
end
end
改成
class B < A
def a
puts 'b-a'
end
load_config_module
end
那么 module 的会覆盖类里的 a,这样应该也是可以满足你的,不过感觉挺不舒服
我提出的处理方式,不是为了让你破坏子类
而是让你可以根据 config 配置的方式把你的 module 融入你不同的类
我不太赞成那种破坏的方式,嘿嘿
你看看这样写满足你要求吗?
#定义config
CONFIG={"A"=>["M1"],"B"=>["M2"],"C"=>["M3"]}
#module块
module M1
def a
puts "this is M1 on A"
end
end
module M2
def a
puts "this is M2 on B"
end
end
module M3
def a
puts "this is M3 on C"
end
end
#include负责向类(的实例)追加功能,而extend则只向某特定的对象追加模块的功能.
#这里修改父类
class Object
def self.load_config_module
CONFIG[self.to_s].each do |module_name|
eval("extend #{module_name}")
end if CONFIG && CONFIG[self.to_s]
end
end
#类
class A
load_config_module
end
class B < A
load_config_module
end
class C < A
load_config_module
end
puts "======A========"
A.a
puts "======B========"
B.a
puts "======C========"
C.a
结果:
$ ruby testrb.rb
======A========
this is M1 on A
======B========
this is M2 on B
======C========
this is M3 on C
就是每一个类都需要加一句 load_config_module 如果不加,就不会加载,加载什么就根据你的 config 的配置
怎么支持啊???
感觉有搞头
你要在父类里,修改子类的方法? 子类调用 a 方法,a 会覆盖父类的 a,这是正常的继承。
你要让再父类去修改子类的 a。。。没想过!!! 为什么你不再 B 里去判断你的 include 呢?
刚入行时,公司选的
话说也不需要啊,你之前的 include 的方式也可以啊,通过 config 配置来判断你要 include 什么。 载入什么不是重点吧。
有点不懂你的需求,呵呵
差点想歪了,你们是移动客服解决方案,不是具体的某一个行业的体现。
我开始看完视频后,就想: 这是前端,实际上这项目重要的是后台管理和线下的洽谈,如果真的做像视频里的 LBS 的电子商务。
细想了回过神来,你们只是视频里面的一个支持。视频误导人,哈哈
哈哈,视频的手机不错,成本多少钱
好高端啊~
为啥不用闭包?
再说白点就是可以让你以前用递归查树结构变成了扁平的查询,一句 sql 搞定
是否自关联不是很重要,不过在一张表里会好很多
简单来说,lft 和 rgt 的值可以用来提高查询的效率 比如按你的那个图来说,你要查树里的 2 这个节点的所有子节点,那就差 lft 大于 2,rgt 小于 11 这样你就可以得到 3、4、5、6、7、8、9、10 这些,都是 2 的子节点,因为 lft 和 rgt 可以作为索引,数值索引查询速度是最快的,所以可以很快定位这些数据
不单查子节点,兄弟节点,父节点都可以很快获取,你可以去深入研究啦,rails 里有一个 gem 支持这个对象的封装,我记不起啥名字了,以前经常用,嘿嘿。
封装完后,你 Class.find(x).children 就能通过 left 和 rgt 获得 3、4、5、6、7、8、9、10
嘎嘎,那可以快速获取树的一个算法 不过每次更新都会更新那两个值,查询效率很高
对自己身体不自信。。。没当神仙的根骨啊
哈哈,那里写的!=是说 redirect_to 不是方法的返回 Q 群里有人也问过,应该没解释错吧。拿代码来当话说是很容易误解的。
啥时候来深圳开分公司哈?
@starryin 那啥,看了你眼中靠谱的做 web 开发的同事,应该在小公司工作 2 年,做过 2、3 个中小型项目的程序员就能搞定。 为啥说小公司,因为小公司啥都要熟悉,能搞定,前端后台都能上手。
不过如果说会你说的那些就是架构师?我真不敢苟同。。。 我眼中的架构师是那些能做支持大数量、大访问量的架构的,嘿嘿。个人看法不需要保持一致!
木年会,木放假,要上到 5 号
在国内,墙的问题很麻烦,嘿嘿。那啥 openshift 的 DNS 也被封了些 ip 啥的,经常访问不到应用。
@blacktulip 哈哈,好好笑