【发布时间】:2013-10-10 12:27:36
【问题描述】:
我想扩展 build 方法或创建另一个方法,自动使用父模型的属性预先填充子模型。
我目前每次都在控制器中执行此操作...
@event_log = @event.event_logs.build(
place_id: @event.place_id, quiz_master_id: @event.quiz_master_id,
start_at: Chronic.parse("#{params[:start_at]} #{@event.start_time}")
)
我想将此逻辑移到模型中:
def self.auto_build
build(place_id: event.place_id, .....)
end
但我得到一个错误..undefined method event
我不确定如何仅覆盖此模型的构建或创建类似的方法:
# File 'activerecord/lib/active_record/associations/builder/association.rb', line 11
def self.build(model, name, options)
new(model, name, options).build
end
【问题讨论】:
-
是否要覆盖 Rails 提供的默认
build方法? -
此错误意味着您的
event_log对象没有与之关联的event对象。 -
是的,这将是我对这个模型的偏好,除非有什么理由不这样做。
-
但是当您在
event_log模型中调用event时,它根本不知道event是什么。 -
是的,我明白了,但除了 event.event_logs.auto_build(model) 之外,我不确定如何传入模型...
标签: ruby-on-rails ruby ruby-on-rails-3 model ruby-on-rails-4