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

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

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
共收到 6 条回复
  1. super代表它使用了父类ActiveRecord::Base#initialize方法;
  2. ActiveRecord::Base中描述了#initialize Methods included from Core;
  3. 具体定义在这里
flypiggys 回复

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

hemengzhi88 回复

好的,我研究下

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

flypiggys 回复

原来如此,多谢~

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