InheritedResources 简介 2

对就 model 中的一些 关联 一样,我们在 controller 中也可以用 belongs_to
和 Nested belongs to 如

class TasksController < InheritedResources::Base
  belongs_to :project
end

class CommentsController < InheritedResources::Base
  nested_belongs_to :project, :task
end

还有的东西很坑人,需要的自己看吧。

补充:

正如第一节所说的,在 View 中,你可以用 collection(index 中) 和 resource(除index 外) 辅助方法,来定制默认的实例变量。
例如 :

class ProjectsController < InheritedResources::Base
  protected
    def collection
      @projects ||= end_of_association_chain.paginate(:page => params[:page])
    end
end

InheritedResources 还有一个方法 begin_of_association_chain. 它经常用于这种情况,你有一个资源,它 belongs_to :user, 而这个 :user, 就是@current_user, 并且你的 urls 就像这样 “account/projects”. 此时你必须 @current_user.projects.find 或 @current_user.projects.

我们就可以这么写:

class ProjectsController < InheritedResources::Base
  protected
    def begin_of_association_chain
      @current_user
    end
end

你可能感兴趣的:(InheritedResources 简介 2)