新手问题 Redmine 这个方法没看懂

bevanpf · 2017年07月04日 · 最后由 bevanpf 回复于 2017年07月04日 · 1565 次阅读

TimeLogControlle的 new 方法中创建 TimeEntry 时传了一堆参数但是 TimeEntry 类 的 initialize 方法好像并没有对参数进行处理,很迷惑,有知道的或者我哪里搞错了可以指点一下吗,不胜感激~

def new
    @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => User.current.today)
    @time_entry.safe_attributes = params[:time_entry]
end
def initialize(attributes=nil, *args)
    super
    if new_record? && self.activity.nil?
      if default_activity = TimeEntryActivity.default
        self.activity_id = default_activity.id
      end
      self.hours = nil if hours == 0
    end
 end
  1. super 代表它使用了父类ActiveRecord::Base#initialize方法;
  2. ActiveRecord::Base中描述了#initialize Methods included from Core;
  3. 具体定义在这里
flypiggys 回复

Super 也没传参过去吧?另外 super 是 ActiveRecord:;base 还是 SafeAttribute?

hemengzhi88 回复

好的,我研究下

直接调用 super 是带当前参数的。 super() 这样是显式指定参数的。

flypiggys 回复

原来如此,多谢~

需要 登录 后方可回复, 如果你还没有账号请 注册新账号