{"version":1,"pages":[{"id":"OVfnwfG7QIjv1S6A14th","title":"Rails 6 开发进阶","pathname":"/rails-beginner-s-guide","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2Y8ol3EbeW46CDQ","title":"Active Model 功能模块","pathname":"/rails-beginner-s-guide/activemodel","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2Y96qunfHOadJTo","title":"Model - 核心","pathname":"/rails-beginner-s-guide/activemodel/model_is_important","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"}]},{"id":"-M3xL2YAFCpW6G3-DZ4S","title":"Validations","pathname":"/rails-beginner-s-guide/activemodel/model_is_important/model_validations","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model - 核心"}]},{"id":"-M3xL2YBVZfDoHXJSVKz","title":"Validator","pathname":"/rails-beginner-s-guide/activemodel/model_is_important/model_validator","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model - 核心"}]},{"id":"-M3xL2YCvKIDeMW7k1oQ","title":"Errors","pathname":"/rails-beginner-s-guide/activemodel/model_is_important/activemodel_errors","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model - 核心"}]},{"id":"-M3xL2YDHihdh2kKotVa","title":"Validations 相关的 Callbacks","pathname":"/rails-beginner-s-guide/activemodel/model_is_important/validations_callbacks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model - 核心"}]},{"id":"-M3xL2YE8VZunbcomNLk","title":"Conversion","pathname":"/rails-beginner-s-guide/activemodel/model_is_important/model_conversion","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model - 核心"}]},{"id":"-M3xL2YFQMbfQwlb8bhg","title":"Naming & Name","pathname":"/rails-beginner-s-guide/activemodel/model_is_important/model_naming","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model - 核心"}]},{"id":"-M3xL2YGy3Y096y-tk_J","title":"Translation","pathname":"/rails-beginner-s-guide/activemodel/model_is_important/model","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model - 核心"}]},{"id":"-M3xL2YHmVnWmYwkdxOk","title":"Lint Tests","pathname":"/rails-beginner-s-guide/activemodel/model_is_important/model_lint_tests","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model - 核心"}]},{"id":"-M3xL2YIOFgvwRNn1vTo","title":"Model 的增强模块","pathname":"/rails-beginner-s-guide/activemodel/active_model__rails","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"}]},{"id":"-M3xL2YJbR75M3o7dHSB","title":"Attribute Assignment","pathname":"/rails-beginner-s-guide/activemodel/active_model__rails/opts_attributeassignment","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model 的增强模块"}]},{"id":"-M3xL2YKk_JsyQn6gaaG","title":"Attribute Methods","pathname":"/rails-beginner-s-guide/activemodel/active_model__rails/model_attributemethods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model 的增强模块"}]},{"id":"-M3xL2YLhIRk0IOjmVJW","title":"Dirty","pathname":"/rails-beginner-s-guide/activemodel/active_model__rails/model_dirty","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model 的增强模块"}]},{"id":"-M3xL2YMm3ZIYQxt8YHs","title":"Secure Password","pathname":"/rails-beginner-s-guide/activemodel/active_model__rails/securepassword","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model 的增强模块"}]},{"id":"-M3xL2YNFgATp-Q3ZXYH","title":"Forbidden Attributes Protection","pathname":"/rails-beginner-s-guide/activemodel/active_model__rails/forbiddenattributesprotection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model 的增强模块"}]},{"id":"-M3xL2YOTnlGwpF3RbUw","title":"Serialization","pathname":"/rails-beginner-s-guide/activemodel/active_model__rails/model_serialization","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model 的增强模块"}]},{"id":"-M3xL2YPp_zg7tb3teUf","title":"Callbacks - 快速提供 3 个回调方法","pathname":"/rails-beginner-s-guide/activemodel/active_model__rails/model_callbacks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"},{"label":"Model 的增强模块"}]},{"id":"-M3xL2YQSeaaBNm15UTQ","title":"其它","pathname":"/rails-beginner-s-guide/activemodel/activemodel_source_review","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Model 功能模块"}]},{"id":"-M3xL2YRBg0WAPZ9W0Rw","title":"Active Record 数据库操作：增删查改","pathname":"/rails-beginner-s-guide/activerecord_db_opertion","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2YSElW2Y1gx13D6","title":"Relation","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"}]},{"id":"-M3xL2YT40rvdV18_EhY","title":"Relation 文件下的方法","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/methods_under_relation","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"}]},{"id":"-M3xL2YUD85uu6bX-rB7","title":"Query Methods","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/active_record_query_interface","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"}]},{"id":"-M3xL2YV6EnueZXcXaem","title":"Preload, Eagerload, Includes 和 Joins 等","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/active_record_query_interface/preload_eagerload_includes_and_joins","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"},{"label":"Query Methods"}]},{"id":"-M3xL2YW1_7MCNqAcTVM","title":"Query Methods 读取、设置查询方法","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/active_record_query_interface/query_methods_metaprogram","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"},{"label":"Query Methods"}]},{"id":"-M3xL2YXyoISx5ZT099e","title":"关联表复杂查询示例","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/active_record_query_interface/complex_query","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"},{"label":"Query Methods"}]},{"id":"-M3xL2YYsUlDl3NwYchl","title":"Spawn Methods","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/relation_spawn_methods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"}]},{"id":"-M3xL2YZtNyVFs3Kg13g","title":"Batches 批量查询","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/relation_batches","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"}]},{"id":"-M3xL2Y_b82_s4aQfaWi","title":"Finder Methods","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/relation_finder_methods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"}]},{"id":"-M3xL2YaYAablcfMOhwL","title":"Calculations 统计计算","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/relation_calculations","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"}]},{"id":"-M3xL2YbqcQsGAEB0BRX","title":"其它","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_relation/relation_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Relation"}]},{"id":"-M3xL2YcJOj4ad2uvKpU","title":"Collection Proxy","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/collection_proxy","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"}]},{"id":"-M3xL2Yd1tzu1coFbcPD","title":"Scoping","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/db_opt_scoping","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"}]},{"id":"-M3xL2Yebwhgse6UCJNa","title":"Attribute Methods","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_attributemethods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"}]},{"id":"-M3xL2Yf84RV29llaSHv","title":"Attribute Methods 文件下的内容","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_attributemethods/attribute_methods_file","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Attribute Methods"}]},{"id":"-M3xL2YgvMFZyfIXKVz1","title":"Read & Write","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_attributemethods/attributemethods_read","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Attribute Methods"}]},{"id":"-M3xL2Yhx_UbEoS84Q_K","title":"Before Type Cast - 类型转换","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_attributemethods/activerecord_-_attributemethods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Attribute Methods"}]},{"id":"-M3xL2YiurM2vdiwed4T","title":"Query - 后缀 '?' 问询","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_attributemethods/activerecord_-_attributemethods-query","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Attribute Methods"}]},{"id":"-M3xL2YjBy5TIohNtbZ1","title":"Serialization","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_attributemethods/attributemethods_serialization","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Attribute Methods"}]},{"id":"-M3xL2YkmmS9ApjS8eHU","title":"Primary Key","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_attributemethods/attributemethods_primary_key","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Attribute Methods"}]},{"id":"-M3xL2YlSoT76XMwqn5p","title":"其它","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/database_opt_attributemethods/attribute_methods_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Attribute Methods"}]},{"id":"-M3xL2YmYvK3f9EInk-8","title":"Persistence","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/opt_persistence","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"}]},{"id":"-M3xL2Yn_qTOXPM8mdp8","title":"数据更新方法对比","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/opt_persistence/db_opt_set_attribute","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Persistence"}]},{"id":"-M3xL2YoCWVflMj0afFE","title":"对比，然后使用合适的方法","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/opt_persistence/use_low-level_methods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Persistence"}]},{"id":"-M3xL2YpELTy6jRHNuU9","title":"多个 save 方法","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/opt_persistence/multiple_save","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"},{"label":"Persistence"}]},{"id":"-M3xL2Yqjt65IVnHrQEL","title":"Counter Cache 计数器","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/opts_counter_cache","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"}]},{"id":"-M3xL2Yr2TV3AEpvFSsA","title":"Querying","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/db_opt_querying","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"}]},{"id":"-M3xL2Ys-M88WusTRkqA","title":"其它","pathname":"/rails-beginner-s-guide/activerecord_db_opertion/db_opt_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库操作：增删查改"}]},{"id":"-M3xL2ZDwBHcD-blQGCX","title":"Active Record 数据库关联关系","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2ZEpzByl1XY50F5","title":"Associations 文件 - 4 个关联方法","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ru_kou_-_associations_wen_jian","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2ZFN_mTfXoJMnl1","title":"Aggregations - composed_of 方法","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/aggregations_composed_of","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2ZGForJZRv5J3ct","title":"Builder - 功能的实现","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/associations_under_builder","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2ZHHuUQxtROr0BL","title":"Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/associations_under_builder/builder_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Builder - 功能的实现"}]},{"id":"-M3xL2ZI9mUHo6sT5A5e","title":"Singular Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/associations_under_builder/builder_singular_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Builder - 功能的实现"}]},{"id":"-M3xL2ZJbyCHPvDqQj9q","title":"Collection Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/associations_under_builder/builder_collection_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Builder - 功能的实现"}]},{"id":"-M3xL2ZKQX1pN0z4WXPD","title":"Has One","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/associations_under_builder/builder_has_one","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Builder - 功能的实现"}]},{"id":"-M3xL2ZLB-48sdHla53_","title":"Belongs To","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/associations_under_builder/builder_belongs_to","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Builder - 功能的实现"}]},{"id":"-M3xL2ZMeSnIVdeX-e34","title":"Has Many","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/associations_under_builder/builder_has_many","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Builder - 功能的实现"}]},{"id":"-M3xL2ZN7gOh_Z_rpBdL","title":"Has And Belongs To Many","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/associations_under_builder/builder_has_and_belongs_to_many","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Builder - 功能的实现"}]},{"id":"-M3xL2ZOLh-3XE_Jk2Bp","title":"Reflection - 实现之关联两者","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2ZPCcSYjM2zwj9T","title":"Abstract Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_abstract_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZQeMbeY4N53W8-","title":"Macro Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_macro_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZRFrVWc_xYkRcR","title":"Association Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_association_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZSSxMK59AUAdRP","title":"Aggregate Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_aggregate_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZTzG_X7VT0iZ1Y","title":"Has Many Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_has_many_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZUnPT4Y1aYT9Vj","title":"Has One Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_has_one_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZVCko7Db7bDIbQ","title":"Belongs To Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_belongs_to_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZWbYj5cG8MFwSm","title":"Has And Belongs To Many Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_has_and_belongs_to_many_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZXktMXHNLPhm9P","title":"Through Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_through_reflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZYL1IjkaP6EzZR","title":"Polymorphic Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_polymorphicreflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2ZZ0wMdHtUcFACw","title":"Runtime Reflection","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/activerecord_association_reflection/reflection_runtimereflection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Reflection - 实现之关联两者"}]},{"id":"-M3xL2Z_l5sKZR5DwuJg","title":"Association 目录 - 实现之提供方法","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2Zabx5w2xHo-CMF","title":"Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2ZbnPgZQMDhFkc6","title":"Belongs To Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_belongs_to_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2ZcGjj0H79nRJTX","title":"Belongs To Polymorphic Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_belongs_to_polymorphic_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2Zdrq1ZnRXL8axd","title":"Collection Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_collection_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2ZerE9I1lq9JpoB","title":"Foreign Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_foreign_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2ZfWpGwrzL0mEq9","title":"Has Many Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_has_many_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2ZgR1hTe-FYZzpV","title":"Has Many Through Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_has_many_through_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2Zh-dPOX7zZHFRF","title":"Has One Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_has_one_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2ZisLg6FLiiRAUN","title":"Has One Through Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_has_one_through_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2ZjLn9xwNaU4ts-","title":"Singular Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_singular_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2ZkqlDcpjdRVp2b","title":"Through Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/ten_association_files/association_through_association","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"Association 目录 - 实现之提供方法"}]},{"id":"-M3xL2Zle9nHkF_pm5tl","title":"4 个关联方法的使用","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/4_methods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2Zmqi4XKv6xGcDq","title":"belongs_to","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/4_methods/method_belongs_to","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"4 个关联方法的使用"}]},{"id":"-M3xL2ZnHUXBato_Z6Kg","title":"has_one","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/4_methods/method_has_one","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"4 个关联方法的使用"}]},{"id":"-M3xL2ZovxLy7N3qHYcE","title":"has_many","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/4_methods/method_has_many","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"4 个关联方法的使用"}]},{"id":"-M3xL2Zp37fllrekyljx","title":"has_and_belongs_to_many","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/4_methods/method_has_and_belongs_to_many","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"4 个关联方法的使用"}]},{"id":"-M3xL2Zqd7kMZ3hufkC2","title":"关联方法的可选参数汇总","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/4_methods/options_for_four_methods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"4 个关联方法的使用"}]},{"id":"-M3xL2Zr0t6i-kqzL1cp","title":"4 个关联方法的补充","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/implied_four_methods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2Zsv0-n9JBPzwVP","title":"使用关联方法后，Rails 自动生成了哪些方法","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/implied_four_methods/methods_which_give_from_4_association_methods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"4 个关联方法的补充"}]},{"id":"-M3xL2Ztdjasw4nVD_2r","title":"habtm vs has_many through","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/implied_four_methods/has_and_belongs_to_many_vs_has_many_through","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"4 个关联方法的补充"}]},{"id":"-M3xL2Yzw_NTF4z8H0lI","title":"Nested Attributes 嵌套属性","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/utify_nested_attributes","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2Z-oYxQPUTQj7is","title":"Inheritance 单表继承","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/inheritance","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2XWVMc_konBmO1x","title":"其它","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/association_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"}]},{"id":"-M3xL2ZvMjCD7Cur1t-g","title":"Autosave Association","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/association_others/activerecord_autosaveassociation","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"其它"}]},{"id":"-M3xL2Zwk9dUH0YsNY2x","title":"Alias Tracker","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/association_others/association_aliastracker","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"其它"}]},{"id":"-M3xL2Zx7ykfY6nIP_iD","title":"Association Scope","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/association_others/association_associationscope","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"其它"}]},{"id":"-M3xL2ZyAzImxgQQcpK3","title":"Join Dependency","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/association_others/association_joindependency","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"其它"}]},{"id":"-M3xL2ZzfXGTEwCBerYt","title":"Preloader","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/association_others/association_preloader","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"其它"}]},{"id":"-M3xL2_-1OSib6W2NxCn","title":"Association Relation","pathname":"/rails-beginner-s-guide/activerecord_association_achitecture/association_others/association_relation","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库关联关系"},{"label":"其它"}]},{"id":"-M3xL2YtWjpkLuyw1UPn","title":"Active Record 数据库特性及功能模块","pathname":"/rails-beginner-s-guide/activerecord_utility","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2YuiBm951LuYNpK","title":"Callbacks 回调","pathname":"/rails-beginner-s-guide/activerecord_utility/callbacks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Yv-jTB1jobdb7e","title":"回调及其顺序","pathname":"/rails-beginner-s-guide/activerecord_utility/callbacks/activemodel_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"},{"label":"Callbacks 回调"}]},{"id":"-M3xL2YwgXvssJtt6aEv","title":"跳过回调","pathname":"/rails-beginner-s-guide/activerecord_utility/callbacks/skip_callbacks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"},{"label":"Callbacks 回调"}]},{"id":"-M3xL2Yxxp93ZlLKDt4_","title":"可选参数","pathname":"/rails-beginner-s-guide/activerecord_utility/callbacks/callback_options","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"},{"label":"Callbacks 回调"}]},{"id":"-M3xL2YyMOPSEH9cA0Dy","title":"after_create 与 after_commit on create 各自存在的坑","pathname":"/rails-beginner-s-guide/activerecord_utility/callbacks/after_save_and_after_commit_abuse","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"},{"label":"Callbacks 回调"}]},{"id":"-M3xL2Z0iVGQlXtOO6dq","title":"Transactions 事务","pathname":"/rails-beginner-s-guide/activerecord_utility/utify_transactions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Z1t4Fxrb8ecA5d","title":"Locking 锁","pathname":"/rails-beginner-s-guide/activerecord_utility/db_opt_locking","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Z2UB1512eDbaEG","title":"Enum 枚举","pathname":"/rails-beginner-s-guide/activerecord_utility/utify_enum","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Z3aBYETYAZNQng","title":"Store","pathname":"/rails-beginner-s-guide/activerecord_utility/utify_store","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Z4_nB7Iwjn_4wk","title":"Validations 校验","pathname":"/rails-beginner-s-guide/activerecord_utility/activerecord__validations","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Z5egNfnHeyMOH0","title":"Secure Token","pathname":"/rails-beginner-s-guide/activerecord_utility/secure_token","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Z6rO-Qw65ogX71","title":"Integration","pathname":"/rails-beginner-s-guide/activerecord_utility/utify_integration","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Z72XrptgM-gAWE","title":"No Touching","pathname":"/rails-beginner-s-guide/activerecord_utility/utify_no_touching","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Z8PwwNm8Ivx-mp","title":"Touch Later","pathname":"/rails-beginner-s-guide/activerecord_utility/touch_later","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2Z9Kal4TF9HqygW","title":"Attributes","pathname":"/rails-beginner-s-guide/activerecord_utility/utify_attributes","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2ZA2qkg1egnUxQR","title":"Readonly Attributes","pathname":"/rails-beginner-s-guide/activerecord_utility/utify_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2_NI7u0PBCkr8Dz","title":"Serialization","pathname":"/rails-beginner-s-guide/activerecord_utility/active_record_serialization","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2ZBSijQgEFw32bQ","title":"Suppressor","pathname":"/rails-beginner-s-guide/activerecord_utility/suppressor","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库特性及功能模块"}]},{"id":"-M3xL2_0xBt-mAwm9Y5u","title":"Active Record 数据库迁移：表/字段","pathname":"/rails-beginner-s-guide/activerecord_migration","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2_12avguoLKyWHP","title":"Connection Handling 连接数据库","pathname":"/rails-beginner-s-guide/activerecord_migration/connection_handling","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"}]},{"id":"-M3xL2_294cUp1qXjA2e","title":"Migration 文件下的内容","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_readme","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"}]},{"id":"-M3xL2_3D6v-1UQ1dLtZ","title":"控制台里迁移、回滚等命令","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_readme/migration_rollback","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"Migration 文件下的内容"}]},{"id":"-M3xL2_4XSqGVy6tG_HE","title":"say_with_time","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_readme/migration_say_with_time","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"Migration 文件下的内容"}]},{"id":"-M3xL2_5DS51FdnX94L_","title":"Connection Adapters","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_connectionadapters","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"}]},{"id":"-M3xL2_6IFKPS_GvA3Tg","title":"Schema Statements","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_connectionadapters/connection-adapter_schema_statements","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"Connection Adapters"}]},{"id":"-M3xL2_7UWB_3uTUe3m4","title":"create_table","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_connectionadapters/connection-adapter_schema_statements/create_change_table","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"Connection Adapters"},{"label":"Schema Statements"}]},{"id":"-M3xL2_8Q4j8x5cpiUq7","title":"change_table","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_connectionadapters/connection-adapter_schema_statements/method_change_table","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"Connection Adapters"},{"label":"Schema Statements"}]},{"id":"-M3xL2_9XMmOlUDMfXiy","title":"Table Definition","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_connectionadapters/connection-adapter_table_definition","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"Connection Adapters"}]},{"id":"-M3xL2_AEWTZuAtacUCi","title":"Table","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_connectionadapters/connection-adapter_table","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"Connection Adapters"}]},{"id":"-M3xL2_BQMPPDPd6qck8","title":"Database Statements","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migration_connectionadapters/connection-adapter_database_statements","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"Connection Adapters"}]},{"id":"-M3xL2_C3wcB1Glud-Gl","title":"Model Schema","pathname":"/rails-beginner-s-guide/activerecord_migration/migration_modelschema","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"}]},{"id":"-M3xL2_DcLhtiRHHcxP_","title":"Schema","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migrator_schema_relates","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"}]},{"id":"-Mgnr_AvQUrI7QgIosuP","title":"其它","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migrator_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"}]},{"id":"-M3xL2_F-_sDL34rrLUE","title":"schema_format","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migrator_others/schema_format","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"其它"}]},{"id":"-M3xL2_GKB9AnbPExaAL","title":"Schema Migration","pathname":"/rails-beginner-s-guide/activerecord_migration/activerecord_migrator_others/migrator_schema_migration","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库迁移：表/字段"},{"label":"其它"}]},{"id":"-M3xL2_HaSqI9gM5uXFr","title":"Active Record 数据库连接：底层适配，约定、配置","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2_IQum7tXMxfjLe","title":"Naming Conventions","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/coc_naming_conventions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_J537x6CRdQtph","title":"Schema Conventions","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/coc_schema_conventions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_KNkhiiVfnp871","title":"Timestamps","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/coc_timestamps","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_LPak5U14ihycH","title":"Core","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/core","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_M-sZlZRdZ5QY6","title":"获取 record 对象","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/core/generate_record_object","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"},{"label":"Core"}]},{"id":"-M3xL2ZCh5gJxdGmzRhR","title":"Sanitization","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/action_record_sanitization","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_Ol33SCVEmAgq0","title":"Migration DatabaseTasks","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/activerecord_migration_databasetasks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_PdPXh5sH7qoJx","title":"Statement Cache","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/statement_cache","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_QvSSBPZ2C4zDi","title":"Collection Cache Key","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/collection_cache_key","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_RFRj_4IKtK5eP","title":"Attribute Mutation Tracker","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/attribute_mutation_tracker","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_S_s1mBUdnT5co","title":"Attribute Decorators","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/attribute_decorators","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2_T-d7Tsm_sODrE","title":"其它","pathname":"/rails-beginner-s-guide/activerecord_convention_configuration/activerecord_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Record 数据库连接：底层适配，约定、配置"}]},{"id":"-M3xL2XBDP1oO8qzAyrf","title":"Action View 布局、渲染相关","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2Y3fP4GVXt7LW8A","title":"Layouts","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/layouts","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-M3xL2XCul87uS7rnaEQ","title":"Base - 为渲染打基础","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/action_view_base","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-M3xL2XD4Lv89r8yfpSO","title":"非 Rails 是如何渲染的","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/principle_rendering","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-M3xL2XETpLASDnZJFtV","title":"Rails 是如何渲染的","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/how_rails_do_rendering","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-M3xL2XFl9rb-gY9vigy","title":"Rendering","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/how_rails_do_rendering/module_rendering","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"Rails 是如何渲染的"}]},{"id":"-M3xL2XGhB4Lr06YQiSV","title":"渲染器介绍","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/rendering","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-M3xL2XHejoFkt9vBq2C","title":"Renderer - 渲染的入口","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/rendering/rendering_renderer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"渲染器介绍"}]},{"id":"-M3xL2XIjVqGgz9BQxiw","title":"基类 Abstract Renderer","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/rendering/rendering_abstract_renderer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"渲染器介绍"}]},{"id":"-M3xL2XJatu2URNF2Kha","title":"子类 Template Renderer","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/rendering/rendering_template_renderer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"渲染器介绍"}]},{"id":"-M3xL2XKOBXCboT4jqoi","title":"子类 Partial Renderer & Collection Caching","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/rendering/rendering_partial_renderer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"渲染器介绍"}]},{"id":"-M3xL2XL1NY9zZKWBEJb","title":"子类 Streaming Template Renderer","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/rendering/rendering_streaming_template_renderer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"渲染器介绍"}]},{"id":"-M3xL2XM16crEdKl44NP","title":"Template 内容","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/actionview_template","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-M3xL2XNdk09mM11MLng","title":"template 本文件下的内容","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/actionview_template/template_file","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"Template 内容"}]},{"id":"-M3xL2XOLI-WhdtbqSyl","title":"template 目录","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/actionview_template/template_dictory","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"Template 内容"}]},{"id":"-M3xL2XPqH2iLhfiSxHg","title":"Lookup Context","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/lookup_context","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-M3xL2XQhmhD5mbgwhkl","title":"View Paths","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/lookup_context/lookup_context_view_paths","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"Lookup Context"}]},{"id":"-M3xL2XRrGcuu709BVyr","title":"Details Key & Details Cache","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/lookup_context/details_key_and_details_cache","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"Lookup Context"}]},{"id":"-M3xL2XSXFyURcapo_iC","title":"view_context","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/actionviewbase_instance","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-M3xL2XTG2KBKbJX2bW7","title":"Context","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/actionviewbase_instance/actionview_context","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"view_context"}]},{"id":"-M3xL2XU7QefOKTEcB07","title":"Output Flow & Streaming Flow","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/actionviewbase_instance/output_flow_and_streaming_flow","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"view_context"}]},{"id":"-M3xL2XVuGy4dWB3tv8F","title":"View Paths","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/view_paths","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-Mgnr_BF4ElElIiMIOVB","title":"其它","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/render_relate_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"}]},{"id":"-M3xL2XXx-BUVlw3nlqg","title":"Output Buffer & Streaming Buffer","pathname":"/rails-beginner-s-guide/actionview_renderer_and_rendering/render_relate_others/outputbuffer_and_streamingbuffer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 布局、渲染相关"},{"label":"其它"}]},{"id":"-M3xL2XYGM7erWVYlU4Q","title":"Action View 提供的 Helper 方法","pathname":"/rails-beginner-s-guide/actionview_helper_method","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2XZZkAWe-Rri6lu","title":"与表单直接相关的辅助方法","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"}]},{"id":"-M3xL2X_fCD3yTLpjexl","title":"Form Builder","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview/f_form_builder","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单直接相关的辅助方法"}]},{"id":"-M3xL2XafR0LjTMd_Xkt","title":"扩展 Form Builder","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview/f_form_builder/use_and_extend_formbuilder","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单直接相关的辅助方法"},{"label":"Form Builder"}]},{"id":"-M3xL2XbwQZfwxxLV4uN","title":"Form Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview/f_form_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单直接相关的辅助方法"}]},{"id":"-M3xL2XcU3_Nk7jk8BoP","title":"Form Options Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview/f_form_options_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单直接相关的辅助方法"}]},{"id":"-M3xL2Xdabz9lpdIBjkn","title":"Form Tag Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview/f_form_tag_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单直接相关的辅助方法"}]},{"id":"-M3xL2XeybQjP1dZHB5C","title":"与表单非直接相关的辅助方法","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"}]},{"id":"-M3xL2XfQxgTpdBBiAyd","title":"Tag Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_tag_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2Xg9erblAXu9Kzs","title":"Url Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_url_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XhSZ5zmj7a53VN","title":"Asset Tag Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_asset_tag_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2Xi1hMKfKtsPu6w","title":"Cache Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_cache_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XjoqIR1S1ymYNk","title":"片段缓存和 Cache Key","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_cache_helper/say_cache","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"},{"label":"Cache Helper"}]},{"id":"-M3xL2XkCd2eofZ15Pp6","title":"Controller Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/controller_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2Xl_mXFHT_D9DhN","title":"Asset Url Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_asset_url_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XmMLFP0GWGX6E4","title":"Csrf Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_csrf_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XnCJtBICwZ_Oom","title":"Capture Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_capture_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XoOHJLpoDL8pos","title":"Debug Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_debug_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2Xp_q3OPSI4ubPU","title":"Date Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_date_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2Xqv18DXSJETNTx","title":"JavaScript Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_javascript_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XrarFBrsCnU8I_","title":"Number Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_number_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XsguduZFmNRCH2","title":"Output Safety Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_output_safety_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2Xt9LnJh9kuMo2Q","title":"Rendering Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_rendering_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XuTpomQ_8fe_Z2","title":"Record Tag Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_record_tag_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XvVqsXZ0VVfw3b","title":"Sanitize Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_sanitize_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2Xwfo3EgctcYCcJ","title":"Translation Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_translation_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XxTRb-jKZKQ24R","title":"Text Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_text_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XyLvc6ShKswT7T","title":"Atom Feed Helper","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_atom_feed_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2XzTd5lX4PJhx-x","title":"Active Model Instance Tag","pathname":"/rails-beginner-s-guide/actionview_helper_method/actionview_helper_methods_introduction/helper_activemodel_instance_tag","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"},{"label":"与表单非直接相关的辅助方法"}]},{"id":"-M3xL2Y-q2c5BBfIh-UN","title":"其它","pathname":"/rails-beginner-s-guide/actionview_helper_method/helpers_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 提供的 Helper 方法"}]},{"id":"-M3xL2Y0Wjyzhk9uZYsJ","title":"Action View 其它类和模块","pathname":"/rails-beginner-s-guide/actionview_non-rendering_and_helper_methods","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2Y1C9XF7KuWrHWH","title":"Record Identifier","pathname":"/rails-beginner-s-guide/actionview_non-rendering_and_helper_methods/record_identifier","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 其它类和模块"}]},{"id":"-M3xL2Y2SzFT_jeTP4ij","title":"Routing Url For","pathname":"/rails-beginner-s-guide/actionview_non-rendering_and_helper_methods/routing_url_for","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 其它类和模块"}]},{"id":"-M3xL2Y4BqdeBnFaSon6","title":"Model Naming","pathname":"/rails-beginner-s-guide/actionview_non-rendering_and_helper_methods/modelnaming","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 其它类和模块"}]},{"id":"-M3xL2Y52TUUYDmY5k2Z","title":"Digestor","pathname":"/rails-beginner-s-guide/actionview_non-rendering_and_helper_methods/digestor","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 其它类和模块"}]},{"id":"-M3xL2Y6-kbwEJ2EGAbu","title":"Dependency Tracker","pathname":"/rails-beginner-s-guide/actionview_non-rendering_and_helper_methods/digestor/dependency_tracker","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 其它类和模块"},{"label":"Digestor"}]},{"id":"-M3xL2Y7CLEv9bH5w2ia","title":"其它","pathname":"/rails-beginner-s-guide/actionview_non-rendering_and_helper_methods/others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action View 其它类和模块"}]},{"id":"-M3xL2WSXE5J_p6qpIiK","title":"Action Dispatch Http 作用：请求、响应","pathname":"/rails-beginner-s-guide/actiondispatch_http","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2WTcdL8K5gUT0UA","title":"Request","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"}]},{"id":"-M3xL2WUeIJPuVNcymJE","title":"Request 文件下的内容","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request/request_file","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Request"}]},{"id":"-M3xL2WVs8kT1xKkJUVt","title":"URL","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request/http_url","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Request"}]},{"id":"-M3xL2WWIld67lxXmH-U","title":"Headers","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request/http_headers","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Request"}]},{"id":"-M3xL2WXLUQleQ6CJNNi","title":"Mime Negotiation","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request/http_mimenegotiation","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Request"}]},{"id":"-M3xL2WY2tnqf5yd9Fgl","title":"Parameters","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request/http_parameters","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Request"}]},{"id":"-M3xL2WZkxUjwgM0I2Cy","title":"Parameter Filter & Filter Parameters","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request/http_parameterfilter","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Request"}]},{"id":"-M3xL2W_Kpoejzm8QecG","title":"Cache 之 Request","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request/http_cache","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Request"}]},{"id":"-M3xL2Wa87c05748uVp8","title":"Uploaded File","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request/http_uploadedfile","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Request"}]},{"id":"-M3xL2WbNegXtU-0YFUt","title":"Utils","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_request/request_utils","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Request"}]},{"id":"-M3xL2WcVz07EafR2w1k","title":"Response","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_response","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"}]},{"id":"-M3xL2WdQ1eDmqEOILJa","title":"Response 文件下的内容","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_response/response_file","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Response"}]},{"id":"-M3xL2WeVga2_KDXdyyG","title":"Filter Redirect","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_response/http_filterredirect","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Response"}]},{"id":"-M3xL2Wf76ePAZgZ_uH9","title":"Cache 之 Response","pathname":"/rails-beginner-s-guide/actiondispatch_http/actiondispatch_response/cache_response","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"Response"}]},{"id":"-M3xL2Vy8ifXX9YEanVZ","title":"其它","pathname":"/rails-beginner-s-guide/actiondispatch_http/http_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"}]},{"id":"-M3xL2Wh3_n0-xvB10MO","title":"Rack Cache","pathname":"/rails-beginner-s-guide/actiondispatch_http/http_others/rack_cache","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"其它"}]},{"id":"-M3xL2WiMlQ69LTlymrZ","title":"Mime Type register","pathname":"/rails-beginner-s-guide/actiondispatch_http/http_others/mime_type_register","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"其它"}]},{"id":"-M3xL2WjadLWZpEGsA-A","title":"Session","pathname":"/rails-beginner-s-guide/actiondispatch_http/http_others/request_session","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Http 作用：请求、响应"},{"label":"其它"}]},{"id":"-M3xL2W3hQG5oAQGa4We","title":"Action Dispatch Middleware 中间件","pathname":"/rails-beginner-s-guide/actiondispatch_middleware","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2W4ptY0j-ifc1YS","title":"Middleware","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/middleware_intro","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"}]},{"id":"-M3xL2W5KcA0sdPKCBIa","title":"Rack - Ruby Web server 接口","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/middleware_intro/rack","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"Middleware"}]},{"id":"-M3xL2W6Fsf-QUSLv-5Q","title":"查看项目用了哪些 Middleware","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/middleware_intro/view_how_middleware","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"Middleware"}]},{"id":"-M3xL2W7gPQfwagPF63o","title":"定制 Middleware","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/middleware_intro/custom_middleware","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"Middleware"}]},{"id":"-M3xL2W8ZVDUWQztCQVF","title":"Middleware Stack","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/middleware_intro/middleware_middleware_stack","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"Middleware"}]},{"id":"-M3xL2W9lOL25xc5-cmQ","title":"各个 Middleware 类","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"}]},{"id":"-M3xL2WA8fGjhk1NDFPg","title":"Static","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_static","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WB93EVeM8-R40I","title":"SSL","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_ssl","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WCI8RAn8_CBCoX","title":"Show Exceptions","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_show_exceptions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WD_PbSvlaISLwj","title":"Exception Wrapper","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_exception_wrapper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WEugWDSvwIjYD-","title":"Public Exceptions","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_public_exceptions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WFqm6FUaqOiiC1","title":"定制 Public Exceptions","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_public_exceptions/custom_public_exceptions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"},{"label":"Public Exceptions"}]},{"id":"-M3xL2WGBtvGECceCnqs","title":"Debug Exceptions","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_debug_exceptions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WH0IEyRJbUvXnN","title":"Request Id","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_request_id","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WIcNtpXQR5ZreX","title":"Remote Ip","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_remote_ip","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WJw8q71B-4i0O7","title":"Reloader","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_reloader","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WKX35guyHyIiFy","title":"Params Parser","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_params_parser","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WL2Wt5JfEak-6I","title":"Flash","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_flash","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WM4J8qiGu_Qm2E","title":"Cookies & ChainedCookieJars","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_cookies_and_chainedcookiejars","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WN360CZGac2gu3","title":"Session","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_session","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WOr5ibBl2WCAfr","title":"Callbacks","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/middleware_callbacks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WP5jS8QcefJ7SW","title":"Load Interlock","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/loadinterlock","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WQRdjBsaZfpbMb","title":"Executor","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/executor","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2WRrGSSyJOlyDUP","title":"Debug Locks","pathname":"/rails-beginner-s-guide/actiondispatch_middleware/each_middleware/debuglocks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Middleware 中间件"},{"label":"各个 Middleware 类"}]},{"id":"-M3xL2Vl71X85FtcHFJT","title":"Action Dispatch Routing 路由顶层（表现形式）","pathname":"/rails-beginner-s-guide/actiondispatch_routing","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2VmzqI-vWZzoEG_","title":"Mapper","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"}]},{"id":"-M3xL2VnTEhhVrz3ZecM","title":"Base","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/mapper_base","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"}]},{"id":"-M3xL2VooZ_chLDOfGBr","title":"Http Helpers","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/mapper_httphelpers","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"}]},{"id":"-M3xL2Vp0MQza-mXF6bV","title":"Scoping","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/mapper_scoping","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"}]},{"id":"-M3xL2VqJnb0Vi1skuvA","title":"scope","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/mapper_scoping/scope_method","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"},{"label":"Scoping"}]},{"id":"-M3xL2VrawCniVl5DSzA","title":"namespace","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/mapper_scoping/namespace_method","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"},{"label":"Scoping"}]},{"id":"-M3xL2VsGh8_uBnqm4k0","title":"Concerns","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/mapper_concerns","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"}]},{"id":"-M3xL2VtV9I6p6EMPVtJ","title":"Resources","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/mapper_resources","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"}]},{"id":"-M3xL2VuemYuXrlJhPnk","title":"Scope、Mapping、Constraints","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/mapper_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"}]},{"id":"-M3xL2Vv4oS6gIejaDMR","title":"Redirection","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/routing_redirection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"}]},{"id":"-M3xL2Vwqw8X7fGACchE","title":"match 和 scope 方法 - 重中之重","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/key_points","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"}]},{"id":"-M3xL2VxNBXn04obCCch","title":"路由常用方法汇总","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_mapper/common_instance_methods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"Mapper"}]},{"id":"-Mgnr_7hvkoAxYRXRfeD","title":"其它","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_qi_ta","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"}]},{"id":"-M3xL2VzpQ6eefrzC_dX","title":"Polymorphic Routes","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_qi_ta/routing_polymorphicroutes","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"其它"}]},{"id":"-M3xL2W-J1avi7L2zTul","title":"Url For","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_qi_ta/routing_urlfor","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"其它"}]},{"id":"-M3xL2W0sc_MedLUGu8v","title":"Routing 概述：生成、存储、识别","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_qi_ta/actiondispatch_-_routing","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"其它"}]},{"id":"-M3xL2W1DiWWGVkSfdZH","title":"一步步分析从请求到响应涉及到 Rails 的哪些模块","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_qi_ta/request_from_route_to_controller","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"其它"}]},{"id":"-M3xL2W2qNh77fGBzKFN","title":"endpoint 和 inspector 文件","pathname":"/rails-beginner-s-guide/actiondispatch_routing/routing_qi_ta/routing_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch Routing 路由顶层（表现形式）"},{"label":"其它"}]},{"id":"-M3xL2WkHUGhz0qbKHbB","title":"Action Dispatch RouteSet 路由底层（实现方式）","pathname":"/rails-beginner-s-guide/actiondispatch_routeset","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2WlGax75Boy03-Z","title":"实例对象和各个实例方法","pathname":"/rails-beginner-s-guide/actiondispatch_routeset/routeset","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch RouteSet 路由底层（实现方式）"}]},{"id":"-M3xL2WmpL_2xTySaown","title":"Named Route Collection","pathname":"/rails-beginner-s-guide/actiondispatch_routeset/namedroutecollection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch RouteSet 路由底层（实现方式）"}]},{"id":"-M3xL2Wn0tWTcjz60RXF","title":"Dispatcher","pathname":"/rails-beginner-s-guide/actiondispatch_routeset/routeset_dispatcher","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch RouteSet 路由底层（实现方式）"}]},{"id":"-M3xL2WoUSts1QJNHUsm","title":"Generator","pathname":"/rails-beginner-s-guide/actiondispatch_routeset/class_generator","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch RouteSet 路由底层（实现方式）"}]},{"id":"-M3xL2Wpwt6jQo_qwV6g","title":"Routes Proxy","pathname":"/rails-beginner-s-guide/actiondispatch_routeset/routes_proxy","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch RouteSet 路由底层（实现方式）"}]},{"id":"-M3xL2WqYN7yEbkTnMFM","title":"Journey","pathname":"/rails-beginner-s-guide/actiondispatch_routeset/journey","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Dispatch RouteSet 路由底层（实现方式）"}]},{"id":"-M3xL2Ur6Pu3cFwkOQhd","title":"Abstract Controller","pathname":"/rails-beginner-s-guide/abstractcontroller","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2Uszmiu3nSmAvrf","title":"Base","pathname":"/rails-beginner-s-guide/abstractcontroller/abstractcontroller_base","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2UtlY-5uTZGJHcF","title":"获取所有的 Controller 和 action","pathname":"/rails-beginner-s-guide/abstractcontroller/abstractcontroller_base/get_all_controllers_and_actions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"},{"label":"Base"}]},{"id":"-M3xL2UuduITX-N87tYl","title":"Helpers","pathname":"/rails-beginner-s-guide/abstractcontroller/abstractcontroller_helpers","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2UvDBmfBnhSlnFT","title":"Callbacks","pathname":"/rails-beginner-s-guide/abstractcontroller/abstractcontroller_callbacks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2UwDMBWPXFa0QZ9","title":"Rendering","pathname":"/rails-beginner-s-guide/abstractcontroller/abstractcontroller_rendering","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2UxD_oJ_86wOAwJ","title":"render 参数汇总与详解","pathname":"/rails-beginner-s-guide/abstractcontroller/render_options","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2UyJWW5SGu167DD","title":"更多关于渲染","pathname":"/rails-beginner-s-guide/abstractcontroller/render_options/render_method","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"},{"label":"render 参数汇总与详解"}]},{"id":"-M3xL2Uzp8wD6wJ-03Mf","title":"Translation","pathname":"/rails-beginner-s-guide/abstractcontroller/abstract_controller_translation","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2V-9Nu8rv2DCYtK","title":"Collector","pathname":"/rails-beginner-s-guide/abstractcontroller/abstractcontroller_collector","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2V09jC2ARDzKp1V","title":"其它","pathname":"/rails-beginner-s-guide/abstractcontroller/abstract_controller_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2V1w_24ghcH7lom","title":"Asset Paths","pathname":"/rails-beginner-s-guide/abstractcontroller/abstract_controller_others/abstract_controller_asset_paths","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"},{"label":"其它"}]},{"id":"-M3xL2V2t9NP6IVQzfDE","title":"Routes Helpers","pathname":"/rails-beginner-s-guide/abstractcontroller/abstract_controller_others/abstract_controller_routes_helpers","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"},{"label":"其它"}]},{"id":"-M3xL2V3foeYa-GVhkA5","title":"Logger","pathname":"/rails-beginner-s-guide/abstractcontroller/abstract_controller_others/abstract_controller_logger","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"},{"label":"其它"}]},{"id":"-M3xL2V4CtV6jZ9t-55f","title":"Url For","pathname":"/rails-beginner-s-guide/abstractcontroller/abstract_controller_others/abstract_controller_url_for","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"},{"label":"其它"}]},{"id":"-M3xL2V52P5_FfjQsRHP","title":"Caching","pathname":"/rails-beginner-s-guide/abstractcontroller/caching","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2V6ZERHkZhDBl_G","title":"Caching & Caching Fragments","pathname":"/rails-beginner-s-guide/abstractcontroller/caching_and_fragments","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"}]},{"id":"-M3xL2V7m04t1X6tHgvv","title":"默认片段缓存策略","pathname":"/rails-beginner-s-guide/abstractcontroller/caching_and_fragments/cache_strategy","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Abstract Controller"},{"label":"Caching & Caching Fragments"}]},{"id":"-M3xL2V88bkfwnetQZ-e","title":"Action Controller - Rack 增强扩展","pathname":"/rails-beginner-s-guide/actioncontroller","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2V9R8RjvYFA0N1c","title":"Metal - 增强的 Rack, 简陋的 Controller","pathname":"/rails-beginner-s-guide/actioncontroller/metal","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"}]},{"id":"-M3xL2VA3DDf7vP9fXkJ","title":"Metal 文件下的内容","pathname":"/rails-beginner-s-guide/actioncontroller/metal/metal_file","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal - 增强的 Rack, 简陋的 Controller"}]},{"id":"-M3xL2VBuMxjCpQW872k","title":"Middleware Stack","pathname":"/rails-beginner-s-guide/actioncontroller/metal/metal_middlewarestack","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal - 增强的 Rack, 简陋的 Controller"}]},{"id":"-M3xL2VCpuyBqTJBIldu","title":"Metal 使用举例","pathname":"/rails-beginner-s-guide/actioncontroller/metal/metal_use_example","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal - 增强的 Rack, 简陋的 Controller"}]},{"id":"-M3xL2VDLxwG3dReY14i","title":"API - Metal 的继承者","pathname":"/rails-beginner-s-guide/actioncontroller/action_controller_api","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"}]},{"id":"-M3xL2VE71cIeov5uJGA","title":"Base - Metal 的继承者","pathname":"/rails-beginner-s-guide/actioncontroller/metal_middleware","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"}]},{"id":"-M3xL2VFGCkeZIoYj7rB","title":"Metal 的扩展","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"}]},{"id":"-M3xL2VGaNFmFNtretur","title":"Redirecting","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_redirecting","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VHaw46xr-FlQw1","title":"Head","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_head","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VI2Y4Y6NAPeLdp","title":"Conditional Get - HTTP Cache","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/conditional_get","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VJbMS2p-KLg9Yk","title":"Conditional Get 其它","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/conditional_get/conditional_get_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"},{"label":"Conditional Get - HTTP Cache"}]},{"id":"-M3xL2VKwM3eNUqe1a3K","title":"Etag With Template Digest","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/etag_with_template_digest","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VL-Ejinzy2yYJ_","title":"Http Authentication","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_httpauthentication","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VMJSEw3n9VWmjW","title":"Basic","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_httpauthentication/authentication_basic","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"},{"label":"Http Authentication"}]},{"id":"-M3xL2VNZHMkVjWD6xP-","title":"Digest","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_httpauthentication/authentication_digest","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"},{"label":"Http Authentication"}]},{"id":"-M3xL2VOBxDgYKPCIqrW","title":"Token","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_httpauthentication/authentication_token","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"},{"label":"Http Authentication"}]},{"id":"-M3xL2VPhlXmPuonVsHu","title":"Streaming","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/streaming","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VQJnGYyOmQBq27","title":"Live","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_live","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VRX_b7wOiqYhfz","title":"Mime Responds & Collector","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_mimeresponds","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VSDmYNYtKtMl0U","title":"Renderers 增删渲染器","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_renderers","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VTpkHBsg_iG0WK","title":"Params Wrapper","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_paramswrapper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VUgG9wy3rT7QMK","title":"Request Forgery Protection","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_requestforgeryprotection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VV-uysQVX_PmVn","title":"Parameters & Strong Parameters","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/actioncontroller_parameters_and_strongparameters","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VWGVyfrAWXw5c4","title":"Data Streaming","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/metal_data_streaming","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VXRDjqU2E88oU7","title":"Force SSL","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/force_ssl","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VYt1nQ2K-5hHNP","title":"Flash","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/flash","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VZ2G4ggqaKJqWO","title":"Helpers","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/metal_helpers","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2V_flmvmCZDxOdo","title":"Cookies","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/metal_cookies","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VaJoESoN0Al8TS","title":"Implicit Render","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/metal_implicit_render","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VbNm1mIAFjG2VV","title":"Instrumentation","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/metal_instrumentation","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2Vcyo3arWVEN8Jy","title":"Rendering","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/metal_rendering","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VdyLahZ6agsJWt","title":"Rescue","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/metal_rescue","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2Veztm16nusLt6a","title":"Url For","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/metal_url_for","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VgSEpS-2pWCekK","title":"其它","pathname":"/rails-beginner-s-guide/actioncontroller/outside_the_metal/other_metal","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"Metal 的扩展"}]},{"id":"-M3xL2VhQKL5STP1ElB5","title":"其它","pathname":"/rails-beginner-s-guide/actioncontroller/actioncontroller_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"}]},{"id":"-M3xL2Viw9am7zFcfg4p","title":"Form Builder","pathname":"/rails-beginner-s-guide/actioncontroller/actioncontroller_others/action_controller_formbuilder","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"其它"}]},{"id":"-M3xL2VjW58wJ5gUHOxX","title":"Renderer","pathname":"/rails-beginner-s-guide/actioncontroller/actioncontroller_others/action_controller_renderer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"其它"}]},{"id":"-M3xL2VfB6YN4zyqrOQu","title":"Basic Implicit Render","pathname":"/rails-beginner-s-guide/actioncontroller/actioncontroller_others/basicimplicitrender","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"其它"}]},{"id":"-M3xL2VkrUoWqv4N-zQW","title":"Railties Helpers","pathname":"/rails-beginner-s-guide/actioncontroller/actioncontroller_others/railties_helpers","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Controller - Rack 增强扩展"},{"label":"其它"}]},{"id":"-M3xL2_ULtdYA_Ix3HXw","title":"Active Support 扩展：autoload 的类和模块","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2_VxO5WJCvHwbby","title":"Autoload","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_-_autoload_","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2_WwW37mps5oTzk","title":"autoload & eager_autoload 补充","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_-_autoload_/autoload_and_eagerautoload_bu_chong","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"},{"label":"Autoload"}]},{"id":"-M3xL2_XLi2oHgv2d6vs","title":"Lazy Load Hooks","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/lazy_load_hooks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2_YQStn6Y0lnjRW","title":"Concern","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_concern","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2_ZJfuVRbG14LTp","title":"File Update Checker","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/fileupdatechecker","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2__aotjOSZp1X30","title":"Notifications","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_notifications","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2_aRdxl6gJcfI-K","title":"Rails 默认已有的 instrumenter","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_notifications/notification_all_instrumenters","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"},{"label":"Notifications"}]},{"id":"-M3xL2_bMlUEIRWmaSyF","title":"Subscriber","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_subscriber","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2_cw5DLS6ZXGn6C","title":"Log Subscriber","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_logsubscriber","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2_dPQycGUPfVoRN","title":"Action Mailer Log Subscriber","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_logsubscriber/actionmailer_logsubscriber","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"},{"label":"Log Subscriber"}]},{"id":"-M3xL2_e_z-4f0gGWs88","title":"Action Controller Log Subscriber","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_logsubscriber/actioncontroller_logsubscriber","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"},{"label":"Log Subscriber"}]},{"id":"-M3xL2_f2M-ubz_BMgU0","title":"Action View Log Subscriber","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_logsubscriber/actionview_logsubscriber","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"},{"label":"Log Subscriber"}]},{"id":"-M3xL2_gA7RK_zcmL6mB","title":"Active Record Log Subscriber","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_logsubscriber/activerecord_logsubscriber","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"},{"label":"Log Subscriber"}]},{"id":"-M3xL2_hzfRxSXCtvC9Q","title":"Rescuable","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/activesupport_rescuable","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2_iG82oqJV9iZP3","title":"Descendants Tracker","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/descendants_tracker","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2_jtSw5vynbVSCd","title":"Dependencies","pathname":"/rails-beginner-s-guide/activesupport_other_class_and_module/dependencies","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：autoload 的类和模块"}]},{"id":"-M3xL2_k2PPk2g9XTGrZ","title":"Active Support 扩展：eager_autoload 的类和模块","pathname":"/rails-beginner-s-guide/activesupport","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2_lD7hH__3JYlKp","title":"Cache 缓存的源头","pathname":"/rails-beginner-s-guide/activesupport/cache","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_meO71I6Zt-bZ9","title":"Callback 方法解释及使用","pathname":"/rails-beginner-s-guide/activesupport/actiondispatch_-_callbacks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_nNkb47CpfU7Sp","title":"Callbacks 底层简要分析","pathname":"/rails-beginner-s-guide/activesupport/callback_principle","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_oJFLJ_2asGY2r","title":"Configurable","pathname":"/rails-beginner-s-guide/activesupport/activesupport_configurable","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_pu2MOfEX8IVce","title":"Ordered Hash 和 Ordered Options","pathname":"/rails-beginner-s-guide/activesupport/orderedhash__orderedoptions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_qgccZlsvAtJoj","title":"Inflector","pathname":"/rails-beginner-s-guide/activesupport/activesupport_inflector","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_rtzw2KQEFPPE8","title":"Key Generator 和 Caching Key Generator","pathname":"/rails-beginner-s-guide/activesupport/keygenerator__cachingkeygenerator","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_sX4W0V9DzDw1i","title":"Message Encryptor 和 Message Verifier","pathname":"/rails-beginner-s-guide/activesupport/keygenerator__messageencryptor__messageverifier","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_tKbx56A5NMVCC","title":"String Inquirer - Rails.env.production?","pathname":"/rails-beginner-s-guide/activesupport/railsenvproduction","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_uB805_KoaXzMB","title":"Array Inquirer","pathname":"/rails-beginner-s-guide/activesupport/array_inquirer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_vyAAd3hkk7axX","title":"Tagged Logging","pathname":"/rails-beginner-s-guide/activesupport/activesupport_taggedlogging","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_wbPsYX5nqt9T7","title":"Gzip 与 JSON","pathname":"/rails-beginner-s-guide/activesupport/activesupport_-_gzip__json","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_xgBTW3_kS-knb","title":"Backtrace Cleaner","pathname":"/rails-beginner-s-guide/activesupport/activesupport_-_backtracecleaner_-_proc","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_yaHAuSoexgROS","title":"Number Helper","pathname":"/rails-beginner-s-guide/activesupport/activesupport_numberhelper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2_z1MoGSWJx7j86","title":"Benchmarkable","pathname":"/rails-beginner-s-guide/activesupport/actiondispatch_-_benchmarkable_","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2a-nr6M6S0bPrNa","title":"Xml Mini","pathname":"/rails-beginner-s-guide/activesupport/xml_mini","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2a0DiTOQmtvPqhL","title":"Multibyte","pathname":"/rails-beginner-s-guide/activesupport/multibyte","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2a11o4S_uwWEKej","title":"Deprecation","pathname":"/rails-beginner-s-guide/activesupport/activesupport_deprecation","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2a2yoDAIZ-wK2HI","title":"其它","pathname":"/rails-beginner-s-guide/activesupport/eager_autoload_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 扩展：eager_autoload 的类和模块"}]},{"id":"-M3xL2a3GTaz5h-L6wOf","title":"Active Support 核心扩展","pathname":"/rails-beginner-s-guide/activesupport_core_ext","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2a4NTnqxd08T0tK","title":"Array","pathname":"/rails-beginner-s-guide/activesupport_core_ext/array","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2a5EFMAZaJAI-Pv","title":"Benchmark","pathname":"/rails-beginner-s-guide/activesupport_core_ext/benchmark","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2a6Zma9dceRoR24","title":"Big Decimal","pathname":"/rails-beginner-s-guide/activesupport_core_ext/big_decimal","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2a7lTsRnaKXE-xE","title":"Class","pathname":"/rails-beginner-s-guide/activesupport_core_ext/class","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2a8T3NOpU9AuKGQ","title":"Date","pathname":"/rails-beginner-s-guide/activesupport_core_ext/date","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2a9mRx6ORvdgcsw","title":"Time","pathname":"/rails-beginner-s-guide/activesupport_core_ext/time","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aAC3j2_EFTDAjN","title":"Date Time","pathname":"/rails-beginner-s-guide/activesupport_core_ext/date_time","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aBOsSio-rzqxHE","title":"Duration","pathname":"/rails-beginner-s-guide/activesupport_core_ext/activesupport_duration","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aC7uH2AbM9JdZ2","title":"Time With Zone","pathname":"/rails-beginner-s-guide/activesupport_core_ext/activesupport_timewithzone","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aDTEqJ4RAeUM6O","title":"Time Zone","pathname":"/rails-beginner-s-guide/activesupport_core_ext/time_zone","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aEYHAq4Vu2qEP1","title":"Enumerable","pathname":"/rails-beginner-s-guide/activesupport_core_ext/enumerable","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aFxH9qPR-6LsKY","title":"File","pathname":"/rails-beginner-s-guide/activesupport_core_ext/file","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aGwEIw9f-ClNKH","title":"Hash","pathname":"/rails-beginner-s-guide/activesupport_core_ext/hash","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aHP772vJCilNsb","title":"Hash With Indifferent Access","pathname":"/rails-beginner-s-guide/activesupport_core_ext/hash_with_indifferent_access","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aIKVEIlvZDdn9e","title":"Integer","pathname":"/rails-beginner-s-guide/activesupport_core_ext/integer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aJKMpBLoZtvLB5","title":"Numeric","pathname":"/rails-beginner-s-guide/activesupport_core_ext/numeric","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aKf-cZLNFkMAjW","title":"Kernel","pathname":"/rails-beginner-s-guide/activesupport_core_ext/kernel","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aL-G27uXUEHNbR","title":"Object","pathname":"/rails-beginner-s-guide/activesupport_core_ext/object","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aMoAYYwOvW4xUq","title":"Module","pathname":"/rails-beginner-s-guide/activesupport_core_ext/module","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aNXchlNaUwF9Xg","title":"alias_method_chain","pathname":"/rails-beginner-s-guide/activesupport_core_ext/module/activesupport_core_ext_module","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"},{"label":"Module"}]},{"id":"-M3xL2aOnhJvYerooC3h","title":"Marshal","pathname":"/rails-beginner-s-guide/activesupport_core_ext/marshal","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aPczIlSEGuGfQM","title":"Range","pathname":"/rails-beginner-s-guide/activesupport_core_ext/range","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aQFLkPrDkHa8AU","title":"Regexp","pathname":"/rails-beginner-s-guide/activesupport_core_ext/regexp","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aRVDXYTAK8DPVp","title":"Secure Random","pathname":"/rails-beginner-s-guide/activesupport_core_ext/secure_random","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aSmSoSZbUcQB8R","title":"String","pathname":"/rails-beginner-s-guide/activesupport_core_ext/string","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aTtGsFv-2QTjWS","title":"URI","pathname":"/rails-beginner-s-guide/activesupport_core_ext/uri","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aUTH-kXzY2Tzr4","title":"Load Error","pathname":"/rails-beginner-s-guide/activesupport_core_ext/load_error","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aVaa9kHI0y9gLs","title":"Name Error","pathname":"/rails-beginner-s-guide/activesupport_core_ext/name_error","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aWQf4tcR_B6k8k","title":"Logger","pathname":"/rails-beginner-s-guide/activesupport_core_ext/logger","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aXEKdO3AWDJDmB","title":"Logger Silence","pathname":"/rails-beginner-s-guide/activesupport_core_ext/logger-1","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 核心扩展"}]},{"id":"-M3xL2aYHg7sSy5Sqpyw","title":"Active Support 其它类和模块","pathname":"/rails-beginner-s-guide/activesupport_other_content","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2aZwx6UEg3pC0w4","title":"Security Utils","pathname":"/rails-beginner-s-guide/activesupport_other_content/security_utils","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Support 其它类和模块"}]},{"id":"-M3xL2a_eew-zEDtC_uV","title":"railties 核心：初始化、组件化","pathname":"/rails-beginner-s-guide/rails","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2aa97_hGDwxjZCl","title":"Railtie","pathname":"/rails-beginner-s-guide/rails/railite","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"}]},{"id":"-M3xL2ab24vfVtOUdlmM","title":"Railtie 文件下的内容","pathname":"/rails-beginner-s-guide/rails/railite/railtie_file","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Railtie"}]},{"id":"-M3xL2acz4h_VNS9qClr","title":"Initializable","pathname":"/rails-beginner-s-guide/rails/railite/initializable","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Railtie"}]},{"id":"-M3xL2adjRF-ldqhcufI","title":"Configuration","pathname":"/rails-beginner-s-guide/rails/railite/configuration","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Railtie"}]},{"id":"-M3xL2ae3-0YaogbL-X3","title":"定制自己的 Railtie","pathname":"/rails-beginner-s-guide/rails/railite/custom_your_railtie","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Railtie"}]},{"id":"-M3xL2afFtSwHxI0aYlz","title":"Railtie 补充","pathname":"/rails-beginner-s-guide/rails/railtie_bu_chong","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"}]},{"id":"-M3xL2agGaGLrVtwVLlo","title":"Rails 默认组件都是 Railtie","pathname":"/rails-beginner-s-guide/rails/railtie_bu_chong/all_component_is_railtie","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Railtie 补充"}]},{"id":"-M3xL2ahcH50HP47voex","title":"Engine","pathname":"/rails-beginner-s-guide/rails/engine","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"}]},{"id":"-M3xL2ai_jNU4QrOx3qT","title":"Engine 文件下的内容","pathname":"/rails-beginner-s-guide/rails/engine/contents_under_engine","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Engine"}]},{"id":"-M3xL2ajTIMoTo6XF1mV","title":"Configuration","pathname":"/rails-beginner-s-guide/rails/engine/engine_-_configuration","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Engine"}]},{"id":"-M3xL2akPw6J7DMjrc40","title":"Engine full vs mountable","pathname":"/rails-beginner-s-guide/rails/engine/engine_full_vs_mountable","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Engine"}]},{"id":"-M3xL2alyIg-KTBU1XAE","title":"定制自己的 Engine","pathname":"/rails-beginner-s-guide/rails/engine/custom_your_engine","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Engine"}]},{"id":"-M3xL2am-FLyVUhY5rvG","title":"其它","pathname":"/rails-beginner-s-guide/rails/engine/engine_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Engine"}]},{"id":"-M3xL2an7RyceeSk3zE8","title":"Application","pathname":"/rails-beginner-s-guide/rails/application","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"}]},{"id":"-M3xL2aof3fZQwxruNDh","title":"Application 文件下的内容","pathname":"/rails-beginner-s-guide/rails/application/application_file","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application"}]},{"id":"-M3xL2apjuUPB7erVcK6","title":"Bootstrap","pathname":"/rails-beginner-s-guide/rails/application/bootstrap","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application"}]},{"id":"-M3xL2aqm-wEHVednjSl","title":"Finisher","pathname":"/rails-beginner-s-guide/rails/application/finisher","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application"}]},{"id":"-M3xL2ara0K8-tk9kwxW","title":"Configuration","pathname":"/rails-beginner-s-guide/rails/application/application_configuration","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application"}]},{"id":"-M3xL2asccYPx-9j5OWX","title":"Default Middleware Stack","pathname":"/rails-beginner-s-guide/rails/application/default_middleware_stack","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application"}]},{"id":"-M3xL2atwfBxwgGb9DFL","title":"Rails 应用启动过程","pathname":"/rails-beginner-s-guide/rails/application/start_the_process","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application"}]},{"id":"-M3xL2aubfy_t2m48n4m","title":"Application 补充","pathname":"/rails-beginner-s-guide/rails/application_surface","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"}]},{"id":"-M3xL2avEZjhxzzP81ov","title":"Routes Reloader","pathname":"/rails-beginner-s-guide/rails/application_surface/rails_application_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application 补充"}]},{"id":"-M3xL2awT_rJWWrSvAY2","title":"rake & rails 命令","pathname":"/rails-beginner-s-guide/rails/application_surface/command_line","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application 补充"}]},{"id":"-M3xL2axIfPCxLUoEYn6","title":"rails console 里的小技巧","pathname":"/rails-beginner-s-guide/rails/application_surface/rails_command_line","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application 补充"}]},{"id":"-M3xL2ay58KjieDEGo41","title":"路径 - Root 和 Path","pathname":"/rails-beginner-s-guide/rails/application_surface/root_and_path","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application 补充"}]},{"id":"-M3xL2az9yOs7W8NNUeT","title":"提示信息页面","pathname":"/rails-beginner-s-guide/rails/application_surface/notice_info","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"Application 补充"}]},{"id":"-Mgnr_D0ayA-10E-BAsV","title":"其它","pathname":"/rails-beginner-s-guide/rails/other_sections_of_rails","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"}]},{"id":"-M3xL2b0aETi84zdxzcP","title":"Rails 文件下的内容","pathname":"/rails-beginner-s-guide/rails/other_sections_of_rails/rails_class_method","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"其它"}]},{"id":"-M3xL2b1BE3f-04Z00VB","title":"Configuration Middleware Stack Proxy","pathname":"/rails-beginner-s-guide/rails/other_sections_of_rails/config","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"其它"}]},{"id":"-M3xL2b2hOgDcH__ZBWq","title":"AppName, Application. Engine, Railtie","pathname":"/rails-beginner-s-guide/rails/other_sections_of_rails/appname_application_engine_railite","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"其它"}]},{"id":"-M3xL2b3AZwxEGREPTar","title":"Backtrace Cleaner","pathname":"/rails-beginner-s-guide/rails/other_sections_of_rails/backtrace_cleaner","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"其它"}]},{"id":"-M3xL2b4GUKvMkA30O-x","title":"Rack Logger","pathname":"/rails-beginner-s-guide/rails/other_sections_of_rails/debugger__logger","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"其它"}]},{"id":"-M3xL2b5Zo9kq6B16_UZ","title":"Generators","pathname":"/rails-beginner-s-guide/rails/other_sections_of_rails/generators","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"railties 核心：初始化、组件化"},{"label":"其它"}]},{"id":"-M3xL2bKvKEXKku6PJIh","title":"Rails Configuration 配置","pathname":"/rails-beginner-s-guide/reademe","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2bL51a_Rvg7SbqW","title":"一般常用配置项","pathname":"/rails-beginner-s-guide/reademe/rails_general_configuration","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bMoHwJ-J9t5U3Q","title":"Action Mailer","pathname":"/rails-beginner-s-guide/reademe/configuring_action_mailer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bNQhbQVHgCtQXd","title":"Active Record","pathname":"/rails-beginner-s-guide/reademe/configuring_active_record","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bOf6iLtNhcn8ZK","title":"Action Controller","pathname":"/rails-beginner-s-guide/reademe/configuring_action_controller","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bPNNq2L-76t_aC","title":"Action Dispatch","pathname":"/rails-beginner-s-guide/reademe/configuring_action_dispatch","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bQhDiX1WUknQyI","title":"Action View","pathname":"/rails-beginner-s-guide/reademe/configuring_action_view","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bRLtU4_ykO478a","title":"Active Support","pathname":"/rails-beginner-s-guide/reademe/configuring_active_support","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bSE8KyVxyJB4JI","title":"I18n","pathname":"/rails-beginner-s-guide/reademe/configuring_i18n","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bTilhiriyxfRhC","title":"Generators","pathname":"/rails-beginner-s-guide/reademe/configuring_generators","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bUl2q0rSq7bw6q","title":"Assets","pathname":"/rails-beginner-s-guide/reademe/configuring_assets","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bVXp_6Qkvs8mi2","title":"Environments","pathname":"/rails-beginner-s-guide/reademe/config_environments","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bWu8SP79dVeSey","title":"设置项补充","pathname":"/rails-beginner-s-guide/reademe/rails_configuration_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2bXHW2t6h7qhfmm","title":"Middleware","pathname":"/rails-beginner-s-guide/reademe/configuring_middleware","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Configuration 配置"}]},{"id":"-M3xL2b6hdj0XxjxOVZ2","title":"Rails Generators 代码生成器","pathname":"/rails-beginner-s-guide/generators","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2b7T2JNysxu1xkv","title":"Thor","pathname":"/rails-beginner-s-guide/generators/thor","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"}]},{"id":"-M3xL2b8KgCVsMQiSKTd","title":"generators 下的目录、文件","pathname":"/rails-beginner-s-guide/generators/generators_directory","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"}]},{"id":"-M3xL2b9SNuK8tONaY-y","title":"Base","pathname":"/rails-beginner-s-guide/generators/base","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"}]},{"id":"-M3xL2bAfOTgzQDJdDnl","title":"Actions","pathname":"/rails-beginner-s-guide/generators/actions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"}]},{"id":"-M3xL2bBb8HBfm3EqZrB","title":"Named Base","pathname":"/rails-beginner-s-guide/generators/namedbase","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"}]},{"id":"-M3xL2bCRQTrSXQypfxC","title":"其它","pathname":"/rails-beginner-s-guide/generators/generator_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"}]},{"id":"-M3xL2bD9ltInka5KZU7","title":"App Base","pathname":"/rails-beginner-s-guide/generators/generator_others/appbase","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"},{"label":"其它"}]},{"id":"-M3xL2bEUgiJmdJJe-Ba","title":"Generators 文件下的内容","pathname":"/rails-beginner-s-guide/generators/generator_others/generators_file","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"},{"label":"其它"}]},{"id":"-M3xL2bFDqeURQopFtm1","title":"Migration","pathname":"/rails-beginner-s-guide/generators/generator_others/migration","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"},{"label":"其它"}]},{"id":"-M3xL2bGdnisyn-XCa1j","title":"Active Model","pathname":"/rails-beginner-s-guide/generators/generator_others/activemodel","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"},{"label":"其它"}]},{"id":"-M3xL2bHfEHu494c_lYY","title":"Resource Helpers","pathname":"/rails-beginner-s-guide/generators/generator_others/resource_helpers","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"},{"label":"其它"}]},{"id":"-M3xL2bIYRi-rRH2245D","title":"Model Helpers","pathname":"/rails-beginner-s-guide/generators/generator_others/model_helpers","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"},{"label":"其它"}]},{"id":"-M3xL2bJ0oc7cYw2vDJ7","title":"Generated Attribute","pathname":"/rails-beginner-s-guide/generators/generator_others/generated_attribute","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Rails Generators 代码生成器"},{"label":"其它"}]},{"id":"-M3xL2UgfTr5QXWnNZOH","title":"Action Mailer 发邮件","pathname":"/rails-beginner-s-guide/actionmailer","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2UhivjsY7ws35HM","title":"Base","pathname":"/rails-beginner-s-guide/actionmailer/actionmailer_base","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"}]},{"id":"-M3xL2Ui2PcAbYH6yN0B","title":"拦截器 register_interceptor","pathname":"/rails-beginner-s-guide/actionmailer/actionmailer_base/register_interceptor_method","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"},{"label":"Base"}]},{"id":"-M3xL2UjuTJcTHFoGQaO","title":"订阅者 register_observer","pathname":"/rails-beginner-s-guide/actionmailer/actionmailer_base/register_observer_method","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"},{"label":"Base"}]},{"id":"-M3xL2UkrbZrRjJ0YaNu","title":"Mail Helper","pathname":"/rails-beginner-s-guide/actionmailer/mail_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"}]},{"id":"-M3xL2Ul_HctKLDpGLiL","title":"Message Delivery","pathname":"/rails-beginner-s-guide/actionmailer/message_delivery","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"}]},{"id":"-M3xL2UmXnZEgLvkDIB_","title":"其它","pathname":"/rails-beginner-s-guide/actionmailer/action_mailer_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"}]},{"id":"-M3xL2UnekBaD_5GS3af","title":"Delivery Methods","pathname":"/rails-beginner-s-guide/actionmailer/action_mailer_others/delivery_methods","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"},{"label":"其它"}]},{"id":"-M3xL2Uo-zz2HfPMVEA5","title":"Previews & Preview","pathname":"/rails-beginner-s-guide/actionmailer/action_mailer_others/previews_and_preview","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"},{"label":"其它"}]},{"id":"-M3xL2UpqyCFMmaCxCEn","title":"DeliveryJob","pathname":"/rails-beginner-s-guide/actionmailer/action_mailer_others/deliveryjob","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"},{"label":"其它"}]},{"id":"-M3xL2UqcwZ7l3deyjoe","title":"Collector","pathname":"/rails-beginner-s-guide/actionmailer/action_mailer_others/collector","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Mailer 发邮件"},{"label":"其它"}]},{"id":"-M3xL2UdhymLa6z2LgG5","title":"Active Job 异步任务","pathname":"/rails-beginner-s-guide/activejob","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2UevYevWK4JCa7t","title":"Active Job 使用","pathname":"/rails-beginner-s-guide/activejob/active_job_shi_yong","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Job 异步任务"}]},{"id":"-M3xL2UflozvL59G0MC8","title":"Active Job 补充","pathname":"/rails-beginner-s-guide/activejob/activejob_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Active Job 异步任务"}]},{"id":"-M3xL2Wr6qrhEsqecG86","title":"Action Cable 封装的 WebSockets","pathname":"/rails-beginner-s-guide/action_cable","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2WszCmDGxC7aptZ","title":"服务端 - Ruby 代码","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"}]},{"id":"-M3xL2Wt1UF5j7W6lEoa","title":"Channel","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/action_cable_channel","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2Wu3OMFpj_yZ2Ji","title":"Channel 补充","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/ruby_channel_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2WvXXwPiB66pWWd","title":"Connection","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/action_cable_connection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2WwjLsbINHEzvXD","title":"Connection 补充","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/ruby_connection_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2WxdewBOyI35vxU","title":"Server","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/action_cable_server","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2WyEHFP_NI_b7o2","title":"Server 补充","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/ruby_server_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2WzRxfIhlrj8EDQ","title":"Remote Connections","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/article_cable_misc","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2X-25nSL6aKKoHg","title":"Action Cable Helper","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/action_cable_helper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2X0S5vAkiR8Dk8H","title":"Subscription Adapter","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/subscription_adapter","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2X1t4uN67mjeOff","title":"Subscription Adapter 补充","pathname":"/rails-beginner-s-guide/action_cable/action_cable_source_code/subscriptionadapter-bu-chong","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"服务端 - Ruby 代码"}]},{"id":"-M3xL2X2BNY6JBhunfev","title":"客户端 - Coffee 脚本","pathname":"/rails-beginner-s-guide/action_cable/action_cable_coffee","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"}]},{"id":"-M3xL2X3b9Z_LbshrzgF","title":"Action Cable 文件下的内容","pathname":"/rails-beginner-s-guide/action_cable/action_cable_coffee/action_cable_wen_jian_xia_de_nei_rong","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"客户端 - Coffee 脚本"}]},{"id":"-M3xL2X4sFMlHP33QI1x","title":"Consumer","pathname":"/rails-beginner-s-guide/action_cable/action_cable_coffee/coffee_consumer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"客户端 - Coffee 脚本"}]},{"id":"-M3xL2X5iL8Dl71ITW0R","title":"Subscription","pathname":"/rails-beginner-s-guide/action_cable/action_cable_coffee/subscriptions_and_subscription","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"客户端 - Coffee 脚本"}]},{"id":"-M3xL2X6BV9q0QOfisPc","title":"Connection","pathname":"/rails-beginner-s-guide/action_cable/action_cable_coffee/coffee_connection","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"客户端 - Coffee 脚本"}]},{"id":"-M3xL2X76Zlzq4_uXBJW","title":"Subscriptions","pathname":"/rails-beginner-s-guide/action_cable/action_cable_coffee/coffee_subscriptions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"客户端 - Coffee 脚本"}]},{"id":"-M3xL2X8L77Nz5p5smme","title":"Connection Monitor","pathname":"/rails-beginner-s-guide/action_cable/action_cable_coffee/coffee_connection_monitor","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"},{"label":"客户端 - Coffee 脚本"}]},{"id":"-M3xL2X9F0_6Wn_iQMMM","title":"一些重要的东西","pathname":"/rails-beginner-s-guide/action_cable/action_cable_importants","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"}]},{"id":"-M3xL2XAt3nYyLaodxGv","title":"其它","pathname":"/rails-beginner-s-guide/action_cable/action_cable_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"Action Cable 封装的 WebSockets"}]},{"id":"-Mgnr_E0sQlxIm1AoPOJ","title":"Active Storage 存储功能最小实现","pathname":"/rails-beginner-s-guide/activestorage","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-Mgnr_E2TuAadOCslzXF","title":"前端 Turbolinks","pathname":"/rails-beginner-s-guide/turbolinks","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-Mgnr_E3RE9BvzWXvZ4b","title":"前端 Webpacker","pathname":"/rails-beginner-s-guide/webpacker","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2bf5YkHHi9PZjxU","title":"测试 Testing","pathname":"/rails-beginner-s-guide/testing","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2bg44D4oqubYrSa","title":"Active Support","pathname":"/rails-beginner-s-guide/testing/activesupport_testing","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 Testing"}]},{"id":"-M3xL2bhtnqrhoshM-ED","title":"Active Job","pathname":"/rails-beginner-s-guide/testing/activejob_testhelper","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 Testing"}]},{"id":"-M3xL2biX1yJPtBgIMMt","title":"Action Mailer","pathname":"/rails-beginner-s-guide/testing/testcase_actionmailer","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 Testing"}]},{"id":"-M3xL2bj6A9SmiZ3tIOQ","title":"Action Controller","pathname":"/rails-beginner-s-guide/testing/testcase_actioncontroller","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 Testing"}]},{"id":"-M3xL2bkYJiYmq79zGrT","title":"Action Dispatch","pathname":"/rails-beginner-s-guide/testing/testprocess_actiondispatch","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 Testing"}]},{"id":"-M3xL2bleP068eNDfqKa","title":"Action View","pathname":"/rails-beginner-s-guide/testing/testcase_actionview","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 Testing"}]},{"id":"-M3xL2bm06_r0kIlRsFy","title":"Generators","pathname":"/rails-beginner-s-guide/testing/testcase_generators","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 Testing"}]},{"id":"-M3xL2bnVzI0XLclcFZL","title":"rails-dom-testing","pathname":"/rails-beginner-s-guide/testing/rails-dom-testing","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 Testing"}]},{"id":"-M3xL2boZQ7Nk3Bv7roV","title":"测试 MiniTest","pathname":"/rails-beginner-s-guide/test_minitest","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2bpo1B1c5qUikw3","title":"Spec DSL","pathname":"/rails-beginner-s-guide/test_minitest/minitest_spec","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 MiniTest"}]},{"id":"-M3xL2bq7WdK9n7Yd96M","title":"Assertions","pathname":"/rails-beginner-s-guide/test_minitest/minitest_assertions","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 MiniTest"}]},{"id":"-M3xL2brZkjjwea2owDj","title":"Mock","pathname":"/rails-beginner-s-guide/test_minitest/minitest_mock","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 MiniTest"}]},{"id":"-M3xL2bsZvGUOI3T_Oqf","title":"Unit","pathname":"/rails-beginner-s-guide/test_minitest/minitest_unit","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 MiniTest"}]},{"id":"-M3xL2btwDLRYPUjhD2h","title":"TestCase","pathname":"/rails-beginner-s-guide/test_minitest/minitest_unit/unit_testcase","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 MiniTest"},{"label":"Unit"}]},{"id":"-M3xL2bu1be2Uw4aJk2q","title":"Lifecycle Hooks","pathname":"/rails-beginner-s-guide/test_minitest/minitest_unit/unit_lifecycle_hooks","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 MiniTest"},{"label":"Unit"}]},{"id":"-M3xL2bv7tVex-wavvPM","title":"Guard","pathname":"/rails-beginner-s-guide/test_minitest/minitest_unit/unit_guard","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 MiniTest"},{"label":"Unit"}]},{"id":"-M3xL2bwH8zFI_cxifrb","title":"Expectations","pathname":"/rails-beginner-s-guide/test_minitest/minitest_expectations","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 MiniTest"}]},{"id":"-M3xL2bxFialDAHv40li","title":"其它","pathname":"/rails-beginner-s-guide/test_minitest/minitest_others","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"测试 MiniTest"}]},{"id":"-M3xL2by0_5E96OKms9Q","title":"测试 Factory Girl","pathname":"/rails-beginner-s-guide/gem_factory_girl","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-Mgnr_E1yrrGdCpe8ZpF","title":"rails-guides 指南","pathname":"/rails-beginner-s-guide/rails-guides","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2bY8cCuzkTq6gCm","title":"其它","pathname":"/rails-beginner-s-guide/others","siteSpaceId":"sitesp_zBJJs","description":""},{"id":"-M3xL2bZUaMzErC4q6mR","title":"继承心得","pathname":"/rails-beginner-s-guide/others/misc","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"其它"}]},{"id":"-M3xL2b_Pgfo1qsnvqQ1","title":"Rails 源代码里一些常用方法","pathname":"/rails-beginner-s-guide/others/commonly_used_method","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"其它"}]},{"id":"-M3xL2baKXIj23JxGkHm","title":"Rails assets precompile","pathname":"/rails-beginner-s-guide/others/rails_assets_precompile","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"其它"}]},{"id":"-M3xL2bbD4tig817z2Me","title":"Turbolinks 产生的原因","pathname":"/rails-beginner-s-guide/others/turblinks_from_zero_to_one","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"其它"}]},{"id":"-M3xL2bcBcUF4WUby8KE","title":"Turbolinks 3","pathname":"/rails-beginner-s-guide/others/turbolinks_content","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"其它"}]},{"id":"-M3xL2bd7u1HwKRta2m9","title":"Turbolinks 补充","pathname":"/rails-beginner-s-guide/others/turbolinks_source_code","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"其它"}]},{"id":"-M3xL2bey1f4zFgXEUn3","title":"Turbolinks 5","pathname":"/rails-beginner-s-guide/others/turbolinks-5","siteSpaceId":"sitesp_zBJJs","description":"","breadcrumbs":[{"label":"其它"}]},{"id":"-M3xL2bz2ofvwIplxmFw","title":"后记","pathname":"/rails-beginner-s-guide/preface","siteSpaceId":"sitesp_zBJJs","description":""}]}