我正在使用 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
forbuild
方法?或者,也许更好,我应该以另一种方式继续达到我想做的事情(例如,我应该覆盖模型build
中的方法Articles::Comment
而不是使用alias_method_chain
)?
注意我:我不知道它是否有帮助,但该build
方法是指关联(@article.comments
)。此外,我没有build
在模型中说明方法,Articles::Comment
因为它应该由 Ruby on Rails 框架本身“添加”/“附加”到类(我认为它是通过元编程制作的)。
注二:在考虑使用new
方法时会出现同样的错误build
;也就是说,当使用alias_method_chain :new, :option_name
.