Rails 近期记忆中最大的改变尚未反映在体验 Rails 中:当然,我所说的就是 Merb 合并到 Rails 3 。在资料库中存在一个 3-0-unstable 分支,但它尚未开始与主要发展路线背道而驰。暂时,我将继续关注将作为 Rails 2.3 发布的 master 分支。
Rails 2.3 仍在持续处理中。尽管人们正在休假,但是该团队本周处理了 39 项提交。其中许多是小的错误修复,但是以下是一些您可能会希望在新发展中跟踪的事情。
ActionController::Base#render
对于决定呈现什么内容要聪明得多。您能直接抛弃一些东西并预期获得正确的结果。如果您正在使用 Rails 2.2,则常常需要提供显式信息才能呈现
render :file => '/tmp/random_file.erb'
render :template => 'other_controller/action'
render :action => 'show'
现在,在 Rails 2.3 中,您只需提供您希望呈现的内容即可
render '/tmp/random_file.erb'
render 'other_controller/action'
render 'show'
render :show
Rails 会根据待呈现内容中是否有前导斜杠、嵌套斜杠或完全没有斜杠来决定文件、模板和动作。请注意,呈现动作时,您还可以使用符号而不是字符串。其他呈现样式(:inline, :text, :update, :nothing, :json, :xml, :js
)仍然需要显式选项。
修复 ActiveRecord 的两个问题可以清除与关联相关的故障案例。一个问题处理在一些 has_many :through
关联中引用表名称——如果表名称包含 SQL 关键字,则在 Rails 2.2 中您不能在这样的关联中使用它。 commit
另一个修复再度允许您在 has_many
关系的条件中使用哈希
has_many :orders, :conditions => {:status => 'confirmed'}
该方法在 Rails 2.1 中奏效,在 Rails 2.2 中失败,并且现在将在 Rails 2.3 中再度奏效(如果您正在 Rails 2.2 中处理该问题,则可以使用字符串而不是哈希来指定条件)。 commit
已经删除调用 Model#last
导致的一些副作用(这会在同一作用域内的其他查找器更改顺序)。 commit
通过该补丁,您可以为各种日期选择助手(date_select
、time_select
和 datetime_select
)提供自定义提示,您也可以使用集合选择助手。您可以提供提示字符串或哈希的各个提示字符串以用于各个组件。您还可以将 :prompt
设置为 true
以使用自定义通用提示
select_datetime(DateTime.now, :prompt => true)
select_datetime(DateTime.now, :prompt => "Choose date and time")
select_datetime(DateTime.now, :prompt =>
{:day => 'Choose day', :month => 'Choose month',
:year => 'Choose year', :hour => 'Choose hour',
:minute => 'Choose minute'})
dbconsole 脚本现在可让你使用全数字密码,而不会崩溃。提交
现在你可以用符号来给 send_file
和 send_data
的 :type
选项,如下所示:send_file("fabulous.png", :type => :png)
。提交
如果你用 Active Support 委托,新的 :allow_nil
选项可让你在目标对象为 nil 时返回 nil,而不会引发异常。 提交
你现在可为 updated_at
时间戳指定特定时间戳:cust = Customer.create(:name => "ABC Industries", :updated_at => 1.day.ago)
提交