还有一个我习惯类名是什么关联名就是什么,如果不是有很多同类关联的话,这样编码的时候要思考的东西少些。
belongs_to :person
has_one :album,:foreign_key => "cover_id"
这行可以不要了,应该没有这种查询需求,也省一个 albums 表的索引。
#40 楼 @sundevilyang 我觉得新手看完《Agile Web Development with Rails》最新的中文版就好了。但是实际上经常有人喜欢走「捷径」:
新手搭积木是最好了,写一个搭积木教程其实很难,很容易略过自己觉得不重要但是新手并不懂的东西,但是《Agile Web Development with Rails》被我亲身检验过可以从 0 开始入门。
还是希望新手不要急,我学了半年才写出第一个实用程序(一个博客),一年后才开始了解到 Web 编程需要去学些什么,现在第三年不断发现有要学的东西。跟一些悟性好的人比我算是挺慢的,不过庆幸自己没有三心两意一时学这一时学那。Rails 一直在改动,去掉不好的组件,引进好的设计,所以我用 Rails 的过程也跟着进步了。
我搜了下,只搜到 activerecord-jdbc 有相关的问题,可能是 jruby 特有的?然后我新建了一个 app,用 send 字段没问题。
你试试不用 jruby,用 ruby 1.9.3。
先 fork 一份到自己的账户下,然后对自己的项目进行修改,然后 push 到 github,然后点 Pull Request
应该就是 send 这个字段,覆盖了 .send 方法了,要改名。
抛错的那行代码是
str = object.send("_#{kind}_callbacks").compile(key, object)
表里面有什么字段?
贴 log 别吝啬
#8 楼 @tanjianna 难道 java include 可以突破网速?
第一感觉没什么变 第二感觉变得好奇怪
他们是不是没有专门的设计师做整体的设计啊。
#28 楼 @bhuztez 我不用跟你抠字眼,你在 ruby china 的发帖套路不就是「默念:哟西这个 Rails 默认没提供」 -> 「大声:Rails 太挫了这个都做不到」 -> 别人指出方案 -> 「不行这不是我要的」-> 影遁消失 -> loop
有些人可能脑容量有限或者气量比较小,积累了一些知识就学不进新东西了,这也没问题,把自己已知的钻研到极致,多写些分享也是一大贡献。不过专门找着自己不了解的东西黑,吃相难看啊。
正题,官方文档给的加外键的方法
http://guides.rubyonrails.org/migrations.html#active-record-and-referential-integrity
Although Active Record does not provide any tools for working directly with such features, the execute method can be used to execute arbitrary SQL. You could also use some plugin like foreigner which add foreign key support to Active Record (including support for dumping foreign keys in db/schema.rb).
#5 楼 @tanjianna Ruby 没有编译期,或者你可以在部署的时候先 wget 一下你要访问的页面,然后就缓存起来了。
这特性太奇怪了,建议抛弃。
方案:
我先看 PHP,没学会怎么写网站; 再看 JavaEE,被恶心到了; 再看 Ruby on Rails,终于摸到门道一个网站要怎么写。
所以我觉得我在 Web 编程是通过 Rails 入门的。Rails 组件虽多,但对 Web 开发都是有用的。有人喜欢从精简的框架开始,往后做加法;我就喜欢走别人铺好的铁轨,按需增删组件。看你怎么想,总之从 Rails 入手是可行的。
str = gets
stack = []
pairs = {
'(' => ')',
'[' => ']',
'{' => '}'
}
error = false
str.chars.each do |char|
case char
when *pairs.keys
stack.push char
when *pairs.values
if stack.pop != pairs.key(char)
error = true and break
end
end
end
puts (error || stack.any?) ? 'error' : 'ok'
我也打算下一个项目用 PJAX。
我习惯放 app/views/share
= render :partial => "share/xxx"
class Person
include Mongoid::Document
field :blood_alcohol_level, type: Float, default: 0.40
field :last_drink, type: Time, default: ->{ 10.minutes.ago }
end
引入模块里面的 validate 还不好删,我以前写过这样的代码去掉密码校验
# remove password_digest validator
_validate_callbacks.delete_if {|c| c.raw_filter.is_a?(ActiveModel::Validations::PresenceValidator) && c.raw_filter.attributes.include?(:password_digest)}
_validators.delete(:password_digest)
比较丑,拷贝一份 SecurePassword 模块再修改还比较漂亮。
是不是用了 ActiveModel::SecurePassword,它里面加了密码不能为空的校验。