{"id":8756,"date":"2016-09-06T12:56:40","date_gmt":"2016-09-06T12:56:40","guid":{"rendered":"https:\/\/dev.railscarma.com\/acts_as_votable\/"},"modified":"2021-06-06T11:46:31","modified_gmt":"2021-06-06T11:46:31","slug":"actos_como_votables","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/actos_como_votables\/","title":{"rendered":"\u00bfC\u00f3mo utilizar Acts_As_Votable Gem?"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"8756\" class=\"elementor elementor-8756\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-12639522 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"12639522\" 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-4e907a3a\" data-id=\"4e907a3a\" 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-709e7325 elementor-widget elementor-widget-text-editor\" data-id=\"709e7325\" 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<strong>Actos_como_votables<\/strong> es una gema Ruby escrita espec\u00edficamente para modelos Rails\/ActiveRecord y esta gema permite que cualquier modelo sea votado a favor\/en contra, me gusta\/no me gusta, etc. Permite que cualquier modelo sea votado bajo \u00e1mbitos arbitrarios usando esta gema, podemos votar cualquier modelo. Los votos no tienen que provenir de un usuario, pueden provenir de cualquier modelo (como un grupo o equipo) y proporciona una sintaxis f\u00e1cil de escribir\/leer.\n\n<strong>Instalaci\u00f3n de gemas<\/strong>\n<blockquote>gema &#039;acts_as_votable&#039;<\/blockquote>\nAgregue la l\u00ednea anterior en Gemfile y ejecute la instalaci\u00f3n del paquete. Versiones compatibles de Ruby y Rails.\n<blockquote>Rub\u00ed 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.0 Rieles 3.0, 3.1, 3.2, 4.0, 4.1+<\/blockquote>\nEsta gema utiliza una tabla de votaci\u00f3n para guardar toda la informaci\u00f3n de votaci\u00f3n. Para generar migraci\u00f3n de votos, ejecute los siguientes comandos\n<blockquote>los rieles generan actos_as_votable: migraci\u00f3n rake db: migrar<\/blockquote>\nPara calificar cualquier modelo simplemente use &quot;acts_as_votable&quot; en el modelo\n\n<strong>Ejemplo:<\/strong>\n<blockquote>clase Art\u00edculo &lt; ActiveRecord::Base acts_as_votable end @article = Article.new(:name =&gt; &#039;mi nuevo art\u00edculo&#039;) @article.save @article.liked_by @user @article.votes_for.size # =&gt; 1<\/blockquote>\nA continuaci\u00f3n se muestran algunos ejemplos de votaci\u00f3n. Todas estas convocatorias son v\u00e1lidas y aceptables.\n<blockquote>@article.liked_by @user1 @article.downvote_from @user2 @article.vote_by :voter =&gt; @user3 @article.vote_by :voter =&gt; @user4, :vote =&gt; &#039;me gusta&#039; @article.vote_by :voter =&gt; @user5 , :votar =&gt; &#039;No me gusta&#039;<\/blockquote>\nPor defecto, todos los votos son positivos, por lo que @usuario3 ha emitido un voto &quot;bueno&quot; para @art\u00edculo. @usuario1, @usuario3 y @usuario4 votaron a favor de @art\u00edculo. @ usuario2 y @ usuario5 por el otro votaron en contra de @ art\u00edculo. Cualquier palabra sirve para emitir un voto a favor o en contra de publicaciones como Positivo\/Negativo, Arriba\/Abajo, Me gusta\/No me gusta, etc. Tambi\u00e9n se aplican los indicadores booleanos verdadero y falso.\n\n<strong>Ejemplos con alcances:<\/strong>\n\nUsando esta gema podemos agregar un alcance a nuestro voto.\n<blockquote># votos positivos\/me gusta @article.liked_by @user1, :vote_scope =&gt; &#039;rank&#039; @article.vote_by :voter =&gt; @user3, :vote_scope =&gt; &#039;rank&#039; @article.vote_by :voter =&gt; @user5, :vote =&gt; &#039;me gusta&#039;, :vote_scope =&gt; &#039;clasificaci\u00f3n&#039; # votos negativos\/No me gusta @article.downvote_from @user2, :vote_scope =&gt; &#039;clasificaci\u00f3n&#039; @article.vote_by :voter =&gt; @user2, :vote =&gt; &#039;No me gusta&#039; , :vote_scope =&gt; &#039;rank&#039; # \u00a1Cu\u00e9ntalos! @article.find_votes_for(:vote_scope =&gt; &#039;rango&#039;).tama\u00f1o # =&gt; 5 @article.get_likes(:vote_scope =&gt; &#039;rango&#039;).tama\u00f1o # =&gt; 3 @article.get_upvotes(:vote_scope =&gt; &#039;rango&#039; ).size # =&gt; 3 @article.get_dislikes(:vote_scope =&gt; &#039;rank&#039;).size # =&gt; 2 @article.get_downvotes(:vote_scope =&gt; &#039;rank&#039;).size # =&gt; 2 # El modelo votable puede ser votado en diferentes \u00e1mbitos por el mismo usuario @article.vote_by :voter =&gt; @user1, :vote_scope =&gt; &#039;semana&#039; @article.vote_by :voter =&gt; @user1, :vote_scope =&gt; &#039;mes&#039; @article.votes_for.size # =&gt; 2 @article.find_votes_for(:vote_scope =&gt; &#039;semana&#039;).tama\u00f1o # =&gt; 1 @article.find_votes_for(:vote_scope =&gt; &#039;mes&#039;).tama\u00f1o # =&gt; 1<\/blockquote>\nAl agregar pesos a nuestros votos, podemos agregar peso a nuestro voto. El valor predeterminado es 1.\n<blockquote># votos positivos\/me gusta @article.liked_by @user1, :vote_weight =&gt; 1 @article.vote_by :voter =&gt; @user3, :vote_weight =&gt; 2 @article.vote_by :voter =&gt; @user5, :vote =&gt; &#039;me gusta &#039;, :vote_scope =&gt; &#039;rango&#039;, :vote_weight =&gt; 3 # votos negativos\/No me gusta @article.downvote_from @user2, :vote_scope =&gt; &#039;rango&#039;, :vote_weight =&gt; 1 @article.vote_by :voter =&gt; @user2 , :vote =&gt; &#039;No me gusta&#039;, :vote_scope =&gt; &#039;rank&#039;, :vote_weight =&gt; 3 # \u00a1Cu\u00e9ntalos! @article.find_votes_for(:vote_scope =&gt; &#039;rank&#039;).sum(:vote_weight) # =&gt; 6 @article.get_likes(:vote_scope =&gt; &#039;rank&#039;).sum(:vote_weight) # =&gt; 6 @article.get_upvotes (:vote_scope =&gt; &#039;rango&#039;).sum(:vote_weight) # =&gt; 6 @article.get_dislikes(:vote_scope =&gt; &#039;rango&#039;).sum(:vote_weight) # =&gt; 4 @article.get_downvotes(:vote_scope = &gt; &#039;rango&#039;).sum(:voto_peso) # =&gt; 4<\/blockquote>\nEl Votante podemos hacer que nuestros votantes act\u00faen_como_votante para proporcionar alguna funcionalidad de reserva.\n\n<strong>Por ejemplo<\/strong>\n<blockquote>clase Usuario &lt; ActiveRecord::Base acts_as_voter end @user.likes @article @article.votes.size # =&gt; 1 @article.likes.size # =&gt; 1 @article.dislikes.size # =&gt; 0<\/blockquote>\nPara comprobar si un votante ha votado por un modelo, podemos utilizar voted_for?. Podemos verificar c\u00f3mo vot\u00f3 el votante usando voted_as_when_voted_for, tambi\u00e9n podemos verificar si el votante vot\u00f3 a favor o en contra. \u00bfAlias para los m\u00e9todos votados_up_on? \u00bfSe ha votado a favor? , \u00bfapreciado? y votado_en contra? \u00bfSe ha votado_en contra_a favor?, \u00bfno le gusta? Tambi\u00e9n podemos obtener una lista de todos los objetos por los que ha votado un usuario. Esto devuelve los objetos reales en lugar de instancias del modelo Vote. Todos los objetos est\u00e1n ansiosos por cargar\n\n<strong>Votos registrados:<\/strong>\n\nLos votantes s\u00f3lo pueden votar una vez por modelo. En este ejemplo, el segundo voto no cuenta porque @user ya vot\u00f3 por @post.\n<blockquote>@usuario.likes @post @usuario.likes @post @post.votes # =&gt; 1 @post.likes # =&gt; 1<\/blockquote>\nPara verificar si un voto fue contado o registrado, use vote_registered? en nuestro modelo despu\u00e9s de votar. Por ejemplo:\n<blockquote>@product.liked_by @user @product.vote_registered? # =&gt; verdadero @product.liked_by =&gt; @user @product.vote_registered? # =&gt; falso, \u00bfporque @user ya vot\u00f3 de esta manera @product.disliked_by @user @product.vote_registered? # =&gt; verdadero, porque el usuario cambi\u00f3 su voto<\/blockquote>\nPara comprobar si un voto se registr\u00f3 o se cont\u00f3, utilice vote_registered? en nuestro modelo despu\u00e9s de votar. Para permitir entradas duplicadas de un mismo votante, utilice la opci\u00f3n duplicar. Tenga en cuenta tambi\u00e9n que esto limitar\u00e1 algunos otros m\u00e9todos que no se ocupan de votos m\u00faltiples; en este caso, se considerar\u00e1 el \u00faltimo voto.\n<blockquote>@post.vote_by votante: @user, :duplicate =&gt; true<\/blockquote>\n<strong>Almacenamiento en cach\u00e9:<\/strong>\n\nPara acelerar el rendimiento, podemos agregar columnas de cach\u00e9 a la tabla de nuestro modelo votable. Estas columnas se actualizar\u00e1n autom\u00e1ticamente despu\u00e9s de cada votaci\u00f3n.\n\n<a href=\"\/es\/contactenos\/\">Cont\u00e1ctenos<\/a> o comente a continuaci\u00f3n para saber m\u00e1s sobre nosotros.\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-37c9d121 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"37c9d121\" 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-27649f3a\" data-id=\"27649f3a\" 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-1602a60 elementor-widget elementor-widget-heading\" data-id=\"1602a60\" 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\">Suscr\u00edbete para recibir las \u00faltimas actualizaciones<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4b022491 elementor-widget elementor-widget-shortcode\" data-id=\"4b022491\" 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=\"cargador\"><\/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=\"8dced0a366\">\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=\"Direcci\u00f3n de correo electr\u00f3nico\">\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=\"Nombre\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"Suscribir\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"es\"\/><\/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\">Art\u00edculos Relacionados<\/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=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?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=\"gema kaminari\" 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=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?related_post_from=37277\">\r\n        Gema Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-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=\"por qu\u00e9 contratar desarrolladores de Ruby on Rails en 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=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-ruby-on-rails\/?related_post_from=30627\">\r\n        \u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/importancia-de-la-arquitectura-de-software-en-el-desarrollo-de-software-empresarial\/?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=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" 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=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/importancia-de-la-arquitectura-de-software-en-el-desarrollo-de-software-empresarial\/?related_post_from=36250\">\r\n        Importancia de la arquitectura de software en el desarrollo de software empresarial  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/ruby-ide-las-mejores-ideas-para-el-desarrollo-de-ruby-on-rails\/?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=\"MEJORES IDES PARA EL DESARROLLO DE RUBY ON RAILS\" 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: los mejores IDE para el desarrollo de Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/ruby-ide-las-mejores-ideas-para-el-desarrollo-de-ruby-on-rails\/?related_post_from=36125\">\r\n        Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails  <\/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>Acts_As_Votable is ruby gem specifically written for Rails\/ActiveRecord models and This gem allows any model to be voted on upvote\/downvote like\/dislike, etc. It allows any model to be voted under arbitrary scopes using this gem we can vote any model. votes do not have to come from a user, they can come from any model &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/es\/blog\/how-to-build-a-scalable-saas-platform-using-ruby-on-rails\/\"> <span class=\"screen-reader-text\">C\u00f3mo crear una plataforma SaaS escalable con Ruby on Rails<\/span> Leer m\u00e1s \u00bb<\/a><\/p>","protected":false},"author":1,"featured_media":31872,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[384],"tags":[681,682],"class_list":["post-8756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-articles","tag-acts_as_votable","tag-acts_as_votable-gem"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>What is Acts_as_Votable Ruby Gem ? - RailsCarma<\/title>\n<meta name=\"description\" content=\"Acts_As_Votable is ruby gem specifically written for Rails\/ActiveRecord models &amp; allows any model to be voted on upvote\/downvote like\/dislike\" \/>\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\/es\/blog\/articulos-tecnicos\/actos_como_votables\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is Acts_as_Votable Ruby Gem ? - RailsCarma\" \/>\n<meta property=\"og:description\" content=\"Acts_As_Votable is ruby gem specifically written for Rails\/ActiveRecord models &amp; allows any model to be voted on upvote\/downvote like\/dislike\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/actos_como_votables\/\" \/>\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-09-06T12:56:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-06T11:46:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.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=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"How to use Acts_As_Votable Gem?\",\"datePublished\":\"2016-09-06T12:56:40+00:00\",\"dateModified\":\"2021-06-06T11:46:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/\"},\"wordCount\":929,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.jpg\",\"keywords\":[\"Acts_As_Votable\",\"Acts_As_Votable Gem\"],\"articleSection\":[\"Technical Articles\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/\",\"name\":\"What is Acts_as_Votable Ruby Gem ? - RailsCarma\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.jpg\",\"datePublished\":\"2016-09-06T12:56:40+00:00\",\"dateModified\":\"2021-06-06T11:46:31+00:00\",\"description\":\"Acts_As_Votable is ruby gem specifically written for Rails\/ActiveRecord models & allows any model to be voted on upvote\/downvote like\/dislike\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to use Acts_As_Votable Gem?\"}]},{\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\",\"@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":"\u00bfQu\u00e9 es la gema rub\u00ed Acts_as_Votable? - RielesCarma","description":"Acts_As_Votable es una gema Ruby escrita espec\u00edficamente para modelos Rails\/ActiveRecord y permite que cualquier modelo sea votado a favor\/en contra de me gusta\/no me gusta.","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\/es\/blog\/articulos-tecnicos\/actos_como_votables\/","og_locale":"es_ES","og_type":"article","og_title":"What is Acts_as_Votable Ruby Gem ? - RailsCarma","og_description":"Acts_As_Votable is ruby gem specifically written for Rails\/ActiveRecord models & allows any model to be voted on upvote\/downvote like\/dislike","og_url":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/actos_como_votables\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2016-09-06T12:56:40+00:00","article_modified_time":"2021-06-06T11:46:31+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"Escrito por":"admin","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"How to use Acts_As_Votable Gem?","datePublished":"2016-09-06T12:56:40+00:00","dateModified":"2021-06-06T11:46:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/"},"wordCount":929,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.jpg","keywords":["Acts_As_Votable","Acts_As_Votable Gem"],"articleSection":["Technical Articles"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/","url":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/","name":"\u00bfQu\u00e9 es la gema rub\u00ed Acts_as_Votable? - RielesCarma","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.jpg","datePublished":"2016-09-06T12:56:40+00:00","dateModified":"2021-06-06T11:46:31+00:00","description":"Acts_As_Votable es una gema Ruby escrita espec\u00edficamente para modelos Rails\/ActiveRecord y permite que cualquier modelo sea votado a favor\/en contra de me gusta\/no me gusta.","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/09\/Insight-into-act_as_votable-Gem.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/acts_as_votable\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"How to use Acts_As_Votable Gem?"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Empresa de desarrollo Ruby on Rails especializada en desarrollo offshore","description":"RailsCarma es una empresa de desarrollo de Ruby on Rails en Bangalore. Nos especializamos en el desarrollo offshore de Ruby on Rails con sede en EE. UU. e India. Contrate desarrolladores experimentados de Ruby on Rails para disfrutar de la mejor experiencia web.","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":"es"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RielesCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@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":"administraci\u00f3n","image":{"@type":"ImageObject","inLanguage":"es","@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\/es\/wp-json\/wp\/v2\/posts\/8756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/comments?post=8756"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/8756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media\/31872"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media?parent=8756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/categories?post=8756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/tags?post=8756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}