人间百味,惟善最苦
经过这次,已经彻底不相信中国的官方慈善机构了。
以后捐款通通捐给壹基金,至少有德勒来审计,财务透明。
百度百科上壹基金的介绍:http://baike.baidu.com/view/944321.htm
官方网站:http://www.one-foundation.com/
壹基金的官网做得不错。第一次上中国红十字会的官网,我都以为是个假网站,太不专业了。
注意,壹基金不是独立的法人实体,而是挂靠在中国红十字会下的一个特殊组织,所以叫壹基金计划。壹基金有筹款权利,有监督权利,但是支出款需要红十字会批准。中国尚未批准公募的个人慈善基金。具体请看:http://finance.jrj.com.cn/news/2007-07-17/000002434244.html
"李连杰壹基金计划" 捐款方法
http://www.onefoundation.cn/html/cn/beneficence_01.htm
"李连杰壹基金计划" 是由中国红十字会博爱大使李连杰先生发起和倡导的一项为公益事业的筹款计划,他倡导每人每月最低捐出1元钱,帮助那些确实需要帮助的人们。基金的捐款全部进入中国红十字会总会帐户,并注明"李连杰壹基金计划"财务透明,定期公布。李连杰本人非常诚恳邀请社会与媒体共同监督。
捐款方式有以下三种:
1.使用财付通在线捐赠
2. 手机捐款 (999309 - 谐音是"救救救,善缘久")
如果您愿意捐1或2元,可以发送短信1或2到999309;如果您愿意每月捐款5元或10元或15元,可以发送短信MY5或MY10或MY15到999309。
3. 永久义工
如果您有能力并愿意成为"李连杰壹基金计划"的永久义工,您可以每年捐赠999元。
邮局汇款:
地址:中国北京东城区北新桥三条8号中国红十字会总会李连杰壹基金计划
邮编:100007
银行转账:
开户单位:中国红十字会总会 (请务必在附言处注明“李连杰壹基金计划”)
人民币开户行:中国工商银行北京分行东四南支行。
人民币账号:0200001009014413252
外币开户单位(account name):Red Cross Society of China Jet Li One Foundation Project
外币开户行(bank address):China CITIC Bank Beijing Jiuxianqiao Sub-branch
外币账号 (account number):7112111482600000209
外币开户行 (Outside of Mainland China):
China CITIC Bank Beijing
Jiuxianqiao Sub-branch
Red Cross Society of China
Jet Li One Foundation Project
外币账号 (Account #): 7112111482600000209
该计划期待人人参与,为他人,为自己。捐一元钱,出一点力,献一份爱。赠人玫瑰手有余香,在帮助他人的时候,您一定会感受到更多的幸福和快乐。
行动吧!"李连杰壹基金计划"等待您的参加。
最后提醒您注意,我们目前只有以上三种捐款方式,您不要相信其他途径的筹款。
2008年5月26日星期一
2008年5月18日星期日
2008年5月11日星期日
RailsCasts 006 symbol to proc
返回所有project的name,传统写法:
看完这个episode,不得不叹一句,编程就像是在说话一样,太强大了。
另外,在回复中有读者问到:如果&后的方法有argument的话,还能这样用吗?
作者的回复:Nope, it only works on very simple method calls which don't take an argument. Anything more complicated and you will need to use the full block.
还有老兄问能不能这样写:
projects = Project.find(:all)使用rails提供的shortcut:
projects.collect { |p| p.name }
projects.collect(&:name)刚开始可能会觉得有点weird,不过习惯了就感觉很方便,还可以使用链式操作:projects.collect(&:name).collect(&:downcase)而且不止collect方法可以这样用,所有需要跟block的方法都可以用:
projects.all?(&:valid?)意思是对每个project执行其save!方法,&后面跟的就是要执行的方法名称的symbol。
projects.any?(&:valid?)
projects.each(&:save!)
看完这个episode,不得不叹一句,编程就像是在说话一样,太强大了。
另外,在回复中有读者问到:如果&后的方法有argument的话,还能这样用吗?
作者的回复:Nope, it only works on very simple method calls which don't take an argument. Anything more complicated and you will need to use the full block.
还有老兄问能不能这样写:
ActorNames = Actor.find(:all).collect(&:last_name + ' ' + &:first_name)作者推荐在actor model中定义一个full_name方法,然后调用这个方法:
ActorNames = Actor.find(:all).collect(&:full_name)
RailsCasts 005 using with scope
接上回episode 004,如果我们要查top 20 tasks而非全部记录,该怎么做呢?
不妨直接告诉聪明的find_incomplete方法:
在关联查询里,也可以传options进去:
不妨直接告诉聪明的find_incomplete方法:
@tasks = Task.find_incomplete :limit => 20然后在方法定义中使用with_scope:
def self.find_incomplete(options => {})当然,如果不用with_scope,或者还想传order条件(上面order是写死了的),可以merge options:
with_scope :find => options do
find_all_by_complete(false, :order => 'created_at DESC')
end
end
def self.find_incomplete(options => {})或者使用reverse_merge:
find_all_by_complete(false, (:order => 'created_at DESC').merge(options))
end
find_all_by_complete(false, options.reverse_merge(:order => 'created_at DESC'))
在关联查询里,也可以传options进去:
@tasks = @project.tasks.find_incomplete :limit => 20这里的task查询在两个scope里,一个是@project限定的scope,第二个是:limit限定的scope
RailsCasts 004 move find into model
在controller里:
到这里都看似很平常,下面神奇的就来了。在episode 003里介绍的关联查询也可以用这里定义的find_incomplete方法:
@tasks = Task.find_all_by_complete(false, :order => 'created_at DESC')改成:
@tasks = Task.find_incomplete然后在model里定义incomplete方法,这是一个class方法,前面要加self:def self.find_incomplete注意方法定义体里的find…方法前不用加self,因为当前的作用域就是model类本身。
find_all_by_complete(false, :order => 'created_at DESC')
end
到这里都看似很平常,下面神奇的就来了。在episode 003里介绍的关联查询也可以用这里定义的find_incomplete方法:
@project = Project.find(params[:id])可以改成:
@tasks = @project.tasks.find_all_by_complete(false, :order => 'created_at DESC')
@tasks = @project.tasks.find_incomplete也就是说,凡是Task的class方法,都可以在@project.tasks这样的关联查询中使用。
RailsCasts 003 find through association
关联关系:
Project has_many Tasks
Task belongs_to Project
传统做法:
Project has_many Tasks
Task belongs_to Project
传统做法:
@project = Project.find(params[:id])Rails做法:
@tasks = Task.find(:all, :conditions => ['project_id = ? AND complete = ?'], @project.id, false)
@tasks = @project.tasks.find(:all, :conditions => ['complete = ?'], false)用episode 002介绍的动态方法进一步简化:
@tasks = @project.tasks.find_all_by_complete(false)
RailsCasts 002 dynamic find by methods
传统的查询方法:
@tasks = Task.find(:all, :conditions => ['complete = ?', false])动态查询方法:
@tasks = Task.find(:first, :conditions => ['complete = ?', false], :order => 'created_at DESC')
@tasks = Taks.find_all_by_complete(false)注意第二个,直接把:order这个hash作为第二个参数传进去就可以了。
@tasks = Taks.find_by_complete(false, :order => 'created_at DESC')
订阅:
博文 (Atom)
