{"id":8458,"date":"2016-06-17T10:54:27","date_gmt":"2016-06-17T10:54:27","guid":{"rendered":"https:\/\/dev.railscarma.com\/how-to-add-functionality-to-ruby-classes-with-decorators\/"},"modified":"2021-06-06T12:05:55","modified_gmt":"2021-06-06T12:05:55","slug":"hur-man-lagger-till-funktionalitet-till-rubinklasser-med-dekoratorer","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/sv\/blogg\/oklassificerad\/hur-man-lagger-till-funktionalitet-till-rubinklasser-med-dekoratorer\/","title":{"rendered":"Hur man l\u00e4gger till funktionalitet till rubinklasser med dekorat\u00f6rer"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"8458\" class=\"elementor elementor-8458\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6fd970f1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6fd970f1\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-442169c1\" data-id=\"442169c1\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-766e4dc8 elementor-widget elementor-widget-text-editor\" data-id=\"766e4dc8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<span style=\"font-size: medium;\">Dekorat\u00f6rer till\u00e5ter oss att l\u00e4gga till beteende till objekt under k\u00f6rning och p\u00e5verkar inte andra objekt i klassen. Dekorat\u00f6rer kan anv\u00e4ndas n\u00e4r du dynamiskt beh\u00f6ver l\u00e4gga till och ta bort ansvar f\u00f6r en klass. Dekorat\u00f6rsm\u00f6nstret \u00e4r ett anv\u00e4ndbart alternativ till att skapa underklasser. De ger ytterligare funktionalitet till en klass samtidigt som de h\u00e5ller det offentliga API:et konsekvent. L\u00e5t oss titta p\u00e5 ett exempel f\u00f6r att f\u00f6rst\u00e5 vikten av Ruby Decorators. <\/span>\n\n<span style=\"font-size: medium;\">anser att vi har en Tattoo-klass med en prismetod som ger 300.<\/span>\n<blockquote><span style=\"font-size: medium;\">Klass Tatuering def pris 300 slutslut<\/span><\/blockquote>\n<span style=\"font-size: medium;\">Nu kommer vi att l\u00e4gga till en extra f\u00e4rg som en funktion, och priset skulle h\u00f6jas med 150<\/span>\n\n<span style=\"font-size: medium;\">Det enklaste s\u00e4ttet \u00e4r att skapa en TattooWithColour-underklass som returnerar 450 i prismetoden.<\/span>\n<blockquote><span style=\"font-size: medium;\">klass TattooWithColour &lt; Tattoo def pris 450:- slut\u00e4nde<\/span><\/blockquote>\n<span style=\"font-size: medium;\">D\u00e4refter m\u00e5ste vi representera en stor tatuering som l\u00e4gger till 200 till priset p\u00e5 v\u00e5ra tatueringar. Vi kan representera detta med en BigTattoo-underklass av Tattoo.<\/span>\n<blockquote><span style=\"font-size: medium;\">klass BigTattoo &lt; Tattoo def pris 500 slutslut<\/span><\/blockquote>\n<span style=\"font-size: medium;\">Vi kan ocks\u00e5 ha st\u00f6rre tatueringar och de kan l\u00e4gga ytterligare pris p\u00e5 v\u00e5r BigTattoo. Om vi skulle anse att dessa tatueringar skulle kunna anv\u00e4ndas med f\u00e4rger, skulle vi beh\u00f6va l\u00e4gga till underklasserna BigTattooWithColour och BiggerTattooWithColour.<\/span>\n\n<span style=\"font-size: medium;\">Med denna metod hamnar vi p\u00e5 totalt 6 klasser. Till och med Dubbla s\u00e5 m\u00e5nga om du vill representera dessa kombinationer med extra m\u00f6nster p\u00e5 tatuering.<\/span>\n<h1 class=\"western\"><a name=\"h.m63nvlo5wb6n\"><\/a> <span style=\"font-family: Calibri,serif;\"><span style=\"font-size: medium;\"><b>\u00c4rver dynamiskt med moduler<\/b><\/span><\/span><\/h1>\n<span style=\"font-family: Calibri,serif;\"><span style=\"font-size: medium;\">F\u00f6r att f\u00f6renkla v\u00e5r kod kan vi anv\u00e4nda moduler f\u00f6r att dynamiskt l\u00e4gga till beteende till v\u00e5r Tattoo-klass. L\u00e5t oss skriva ColourTattoo och BigTattoo-moduler f\u00f6r detta.<\/span><\/span>\n<blockquote><span style=\"font-size: medium;\">modul ColourTattoo def pris super + 150 \u00e4nd\u00e4nde<\/span><\/blockquote>\n<blockquote>modul BigTattoo def pris super + 200 slutslut<\/blockquote>\n<span style=\"font-size: medium;\">Nu kan vi ut\u00f6ka v\u00e5ra tatueringsobjekt dynamiskt med Object#extend-metoden.<\/span>\n\n<span style=\"font-size: medium;\">tattoo = Tattoo.new tattoo.extend(ColourTattoo) tattoo.extend(BigTattoo) <\/span>\n\n<span style=\"font-size: medium;\">Detta \u00e4r en bra f\u00f6rb\u00e4ttring j\u00e4mf\u00f6rt med v\u00e5r arvsbaserade implementering. Ist\u00e4llet f\u00f6r att ha underklasser har vi bara en klass och 3 moduler. Om vi beh\u00f6vde l\u00e4gga till extra design till ekvationen beh\u00f6ver vi bara fyra moduler ist\u00e4llet f\u00f6r 12 klasser.<\/span>\n<h1 class=\"western\"><a name=\"h.wafqjdfxo3j0\"><\/a> <span style=\"font-size: medium;\"><b>Applicera dekorationsm\u00f6nstret<\/b><\/span><\/h1>\n<span style=\"font-size: medium;\">Denna modulbaserade l\u00f6sning har f\u00f6renklat v\u00e5r kod avsev\u00e4rt, men vi kan fortfarande f\u00f6rb\u00e4ttra den genom att anv\u00e4nda dekorat\u00f6ren. Vi kommer att betrakta en BiggerTatto som bildad genom att tv\u00e5 g\u00e5nger l\u00e4gga till 150 till kostnaden f\u00f6r en tatuering.<\/span>\n\n<span style=\"font-size: medium;\">Vi kan inte g\u00f6ra detta med v\u00e5rt modulbaserade tillv\u00e4gag\u00e5ngss\u00e4tt. Det skulle vara frestande att ringa tattoo.extend(BigTattoo) tv\u00e5 g\u00e5nger f\u00f6r att f\u00e5 BiggerTattoo. Att ut\u00f6ka modulen andra g\u00e5ngen har ingen effekt n\u00e4r vi redan har anv\u00e4nt f\u00f6rl\u00e4ngningsmoduler.<\/span>\n\n<span style=\"font-size: medium;\">Om vi skulle forts\u00e4tta anv\u00e4nda samma implementering skulle vi beh\u00f6va ha en BiggerTattoo-modul som ger super + 300 som kostnad. Ist\u00e4llet kan vi anv\u00e4nda dekorator som kan komponeras f\u00f6r att bygga komplexa f\u00f6rem\u00e5l. Vi b\u00f6rjar med en dekorat\u00f6r som heter BigTattoo som \u00e4r ett omslag runt ett Tattoo-objekt.<\/span>\n<blockquote><span style=\"font-size: medium;\">class BigTatto def initialize(tattoo) @tattoo = tatueringsslut<\/span><\/blockquote>\n<blockquote>def pris @tattoo.price + 150 slutslut<\/blockquote>\n<span style=\"font-size: medium;\">St\u00f6rre tatuering kan nu skapas genom att anv\u00e4nda detta omslag tv\u00e5 g\u00e5nger p\u00e5 ett tatueringsobjekt.<\/span>\n\n<span style=\"font-size: medium;\">tattoo = Tattoo.new big_tattoo= BigTattoo.new(tattoo) bigger_tattoo = BigTattoo.new(big_tattoo)<\/span>\n\n<span style=\"font-size: medium;\">Vi kan p\u00e5 liknande s\u00e4tt representera f\u00e4rgtatueringar med en TattooWithColour-dekorat\u00f6r. Med bara tre klasser kan vi nu representera 6 typer av tatueringar.<\/span>\n\n<span style=\"font-size: medium;\">Med rik expertis inom alla aspekter av Ruby On Rails Development, har vi p\u00e5 <a href=\"https:\/\/www.railscarma.com\/sv\/\">Railscarma<\/a>, erbjuder dig ett brett utbud av tj\u00e4nster f\u00f6r att hj\u00e4lpa dig att implementera en helt\u00e4ckande personlig strategi f\u00f6r att kommunicera med dina potentiella kunder och dina kunder vid r\u00e4tt tidpunkt, genom r\u00e4tt kanaler. F\u00f6r mer detaljer<a href=\"\/sv\/kontakta-oss\/\"> Kontakta oss.<\/a><\/span>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6c5bbaf8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6c5bbaf8\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5f199228\" data-id=\"5f199228\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9bd6b46 elementor-widget elementor-widget-heading\" data-id=\"9bd6b46\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Prenumerera f\u00f6r de senaste uppdateringarna<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4adf8479 elementor-widget elementor-widget-shortcode\" data-id=\"4adf8479\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t\t\t<script type=\"text\/javascript\">\n\t\t\t\t\t\tvar gCaptchaSibWidget;\n                        var onloadSibCallbackInvisible = function () {\n\n                            var element = document.getElementsByClassName('sib-default-btn');\n                            var countInvisible = 0;\n                            var indexArray = [];\n                            jQuery('.sib-default-btn').each(function (index, el) {\n                                if ((jQuery(el).attr('id') == \"invisible\")) {\n                                    indexArray[countInvisible] = index;\n                                    countInvisible++\n                                }\n                            });\n\n                            jQuery('.invi-recaptcha').each(function (index, el) {\n                                grecaptcha.render(element[indexArray[index]], {\n                                    'sitekey': jQuery(el).attr('data-sitekey'),\n                                    'callback': sibVerifyCallback,\n                                });\n                            });\n                        };\n\t\t\t\t\t<\/script>\n\t\t\t\t\t                <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?onload=onloadSibCallbackInvisible&render=explicit\" async defer><\/script>\n\t\t\t\t\n\t\t\t<form id=\"sib_signup_form_1\" method=\"post\" class=\"sib_signup_form\" action=\"\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/www.railscarma.com\/wp-includes\/images\/spinner.gif\" alt=\"lastare\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"1\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"fac898532c\">\n\t\t\t\t<div class=\"sib_signup_box_inside_1\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                                            <div id=\"sib_captcha_invisible\" class=\"invi-recaptcha\" data-sitekey=\"6LdikOAaAAAAAJ6SWrrKVQrtw7TQpQAEnv0HS0G3\"><\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <label class=\"sib-email-area\"><\/label>\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" required=\"required\" placeholder=\"E-postadress\">\r\n<\/p>\r\n<p class=\"sib-NAME-area\">\r\n    <label class=\"sib-NAME-area\"><\/label>\r\n    <input type=\"text\" class=\"sib-NAME-area\" name=\"NAME\" placeholder=\"namn\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"Prenumerera\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"sv\"\/><\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_1 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_1 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_1 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_1 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">relaterade inl\u00e4gg<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Kaminari Gem\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/kaminari-parla\/?related_post_from=37277\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"kaminari p\u00e4rla\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Kaminari Gem\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/tekniska-artiklar\/kaminari-parla\/?related_post_from=37277\">\r\n        Kaminari Gem  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Varf\u00f6r anst\u00e4lla Ruby on Rails-utvecklare 2026?\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/varfor-anlita-utvecklare-av-ruby-on-rails\/?related_post_from=30627\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"varf\u00f6r anlita utvecklare av ruby on rails 2022\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Varf\u00f6r anst\u00e4lla Ruby on Rails-utvecklare 2026?\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/varfor-anlita-utvecklare-av-ruby-on-rails\/?related_post_from=30627\">\r\n        Varf\u00f6r anst\u00e4lla Ruby on Rails-utvecklare 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Betydelsen av mjukvaruarkitektur vid utveckling av f\u00f6retagsmjukvara\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/vikten-av-mjukvaruarkitektur-i-foretagsutveckling-av-programvara\/?related_post_from=36250\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Betydelsen av mjukvaruarkitektur vid utveckling av f\u00f6retagsmjukvara\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Betydelsen av mjukvaruarkitektur vid utveckling av f\u00f6retagsmjukvara\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/vikten-av-mjukvaruarkitektur-i-foretagsutveckling-av-programvara\/?related_post_from=36250\">\r\n        Betydelsen av mjukvaruarkitektur vid utveckling av f\u00f6retagsmjukvara  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE: De b\u00e4sta IDE:erna f\u00f6r Ruby on Rails Development\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/ruby-ide-de-basta-ideerna-for-ruby-on-rails-utveckling\/?related_post_from=36125\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"B\u00c4STA ID\u00c9ER F\u00d6R UTVECKLING AV RUBY ON RAIL\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby IDE: De b\u00e4sta IDE:erna f\u00f6r Ruby on Rails Development\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/ror\/ruby-ide-de-basta-ideerna-for-ruby-on-rails-utveckling\/?related_post_from=36125\">\r\n        Ruby IDE: De b\u00e4sta IDE:erna f\u00f6r Ruby on Rails Development  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>Decorators allow us to add behavior to objects in runtime and don\u2019t affect other objects of the class. Decorators can be applied when you need to dynamically add and remove responsibility to a class. The decorator pattern is a helpful alternative to creating sub-classes. They give additional functionality to a class while still keeping the &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/third-party-api-integration-solutions-in-ruby-on-rails\/\"> <span class=\"screen-reader-text\">L\u00f6sningar f\u00f6r API-integration fr\u00e5n tredje part i Ruby on Rails<\/span> L\u00e4s mer \u00bb<\/a><\/p>","protected":false},"author":1,"featured_media":31904,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[384,1],"tags":[],"class_list":["post-8458","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-articles","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Add Functionality to Ruby Classes with Decorators - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development<\/title>\n<meta name=\"description\" content=\"Decorators allow us to add behavior to objects in runtime and don\u2019t affect other objects of the class. Decorators can be applied when you need to\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/sv\/blogg\/oklassificerad\/hur-man-lagger-till-funktionalitet-till-rubinklasser-med-dekoratorer\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Add Functionality to Ruby Classes with Decorators - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"og:description\" content=\"Decorators allow us to add behavior to objects in runtime and don\u2019t affect other objects of the class. Decorators can be applied when you need to\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/sv\/blogg\/oklassificerad\/hur-man-lagger-till-funktionalitet-till-rubinklasser-med-dekoratorer\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-17T10:54:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-06T12:05:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"Skriven av\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"How to Add Functionality to Ruby Classes with Decorators\",\"datePublished\":\"2016-06-17T10:54:27+00:00\",\"dateModified\":\"2021-06-06T12:05:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/\"},\"wordCount\":593,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg\",\"articleSection\":[\"Technical Articles\",\"Uncategorized\"],\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/\",\"url\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/\",\"name\":\"How to Add Functionality to Ruby Classes with Decorators - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg\",\"datePublished\":\"2016-06-17T10:54:27+00:00\",\"dateModified\":\"2021-06-06T12:05:55+00:00\",\"description\":\"Decorators allow us to add behavior to objects in runtime and don\u2019t affect other objects of the class. Decorators can be applied when you need to\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Add Functionality to Ruby Classes with Decorators\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hur man l\u00e4gger till funktionalitet till Ruby-klasser med dekorat\u00f6rer - RailsCarma - Ruby on Rails Development Company specialiserat p\u00e5 offshore-utveckling","description":"Dekorat\u00f6rer till\u00e5ter oss att l\u00e4gga till beteende till objekt under k\u00f6rning och p\u00e5verkar inte andra objekt i klassen. Dekorat\u00f6rer kan appliceras n\u00e4r du beh\u00f6ver","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.railscarma.com\/sv\/blogg\/oklassificerad\/hur-man-lagger-till-funktionalitet-till-rubinklasser-med-dekoratorer\/","og_locale":"sv_SE","og_type":"article","og_title":"How to Add Functionality to Ruby Classes with Decorators - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","og_description":"Decorators allow us to add behavior to objects in runtime and don\u2019t affect other objects of the class. Decorators can be applied when you need to","og_url":"https:\/\/www.railscarma.com\/sv\/blogg\/oklassificerad\/hur-man-lagger-till-funktionalitet-till-rubinklasser-med-dekoratorer\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2016-06-17T10:54:27+00:00","article_modified_time":"2021-06-06T12:05:55+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"Skriven av":"admin","Ber\u00e4knad l\u00e4stid":"3 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"How to Add Functionality to Ruby Classes with Decorators","datePublished":"2016-06-17T10:54:27+00:00","dateModified":"2021-06-06T12:05:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/"},"wordCount":593,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg","articleSection":["Technical Articles","Uncategorized"],"inLanguage":"sv-SE","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/","url":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/","name":"Hur man l\u00e4gger till funktionalitet till Ruby-klasser med dekorat\u00f6rer - RailsCarma - Ruby on Rails Development Company specialiserat p\u00e5 offshore-utveckling","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg","datePublished":"2016-06-17T10:54:27+00:00","dateModified":"2021-06-06T12:05:55+00:00","description":"Dekorat\u00f6rer till\u00e5ter oss att l\u00e4gga till beteende till objekt under k\u00f6rning och p\u00e5verkar inte andra objekt i klassen. Dekorat\u00f6rer kan appliceras n\u00e4r du beh\u00f6ver","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/06\/ror-development-1.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/de\/blog\/uncategorized\/so-fugen-sie-ruby-klassen-mithilfe-von-dekoratoren-funktionalitat-hinzu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"How to Add Functionality to Ruby Classes with Decorators"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Ruby on Rails Development Company specialiserat p\u00e5 Offshore Development","description":"RailsCarma \u00e4r ett Ruby on Rails Development Company i Bangalore. Vi \u00e4r specialiserade p\u00e5 Offshore Ruby on Rails Development baserat i USA och Indien. Anst\u00e4ll erfarna Ruby on Rails-utvecklare f\u00f6r den ultimata webbupplevelsen.","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21","name":"administration","image":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/posts\/8458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/comments?post=8458"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/posts\/8458\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/media\/31904"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/media?parent=8458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/categories?post=8458"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/sv\/wp-json\/wp\/v2\/tags?post=8458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}