我正在使用 Ruby on Rails 3.2.13,我想正确使用alias_method_chain :build, :option_name
声明,因为我收到一个奇怪的错误。那是, ...
...在我的控制器文件中我有:
class Articles::CommentsController < ApplicationController
def create
@articles_comment = @article.comments.build(params[:comment])
...
end
end
...在我的模型文件中我有:
class Articles::Comment < ActiveRecord::Base
def self.build_with_option_name
...
end
alias_method_chain :build, :option_name
end
当我运行create
控制器操作我在日志中收到以下错误:
ActionController::RoutingError (undefined method `build' for class `Articles::Comment'):
app/models/articles/comment.rb:5:in `<class:Comment>'
我应该如何使用alias_method_chain
为了build
method?或者,也许更好,我应该以另一种方式继续实现我想做的事情(例如,我应该覆盖build
方法中的Articles::Comment
模型而不是使用alias_method_chain
)?
Note I: 不知道有没有用,不过build
方法指的是关联(@article.comments
)。更多,我不说明build
方法中的Articles::Comment
模型,因为它应该由 Ruby on Rails 框架本身“添加”/“附加”到类中(我认为它是通过元编程实现的)。
Note II:考虑时会出现同样的错误new
方法而不是build
;也就是说,当使用alias_method_chain :new, :option_name
.