Este jueves haremos terracismo.rb en lugar de madrid.rb

56 views
Skip to first unread message

Enrique Garcia Cota

unread,
Oct 24, 2017, 5:46:55 AM10/24/17
to madr...@googlegroups.com
Hola personas humanas,

Llevo algún tiempo organizando Madrid.rb y como organizador he seguido la máxima de: si no encuentro a nadie para dar una charla, la doy yo.

Siento anunciar que este mes voy a tener que incumplir esa regla: no he encontrado a nadie, y tampoco puedo presentar yo. En las últimas 2 semanas he participado en 1 hackathon, ayudado a organizar una conferencia, y preparado y presentado 2 charlas (que no tienen que ver con ruby, no las puedo "reciclar"). Me temo que no me queda fuelle para preparar y presentar otra charla o actividad con tan pocos días.

Así que este mes tendremos que conformarnos un terracismo.rb. Os pido disculpas.

Será un terracismo.rb habitual, como los que hacemos en verano: quedaremos en The Irish Rover, en la planta de arriba, simplemente para socializar. Dependiendo quien venga puede que luego nos vayamos a otro sitio a cenar. Puede venir quien quiera, pero os agradeceríamos que si tenéis pensado venir os apuntéis (por si nos vamos a otro sitio, por ejemplo):


Os recuerdo que si os interesa dar una charla en madrid.rb, tenéis varias alternativas:

* La manera "oficial" es yendo a http://www.madridrb.com/#topics , logeándose y rellenando el formulario. Sirve tanto para proponer temas de los que queráis hablar, como para proponer temas sobre los cuales os gustaría que otras personas hablaran. Ahora mismo el tema más solicitado es rspec.
* Una manera menos oficial sería contactando a @madridrb en twitter. También podéis escribir en esta lista de correo.
* Por último si queréis un poco más de intimidad podéis contactarme a mí directamente - kikito - at - gmail.com

En madrid.rb invitamos y animamos a la gente que nunca ha dado una charla a empezar a hacerlo. Las charlas de nivel de iniciación son bienvenidas, y es una oportunidad muy buena para practicar una charla antes de darla en una conferencia más grande. A todos los speakers les ofrezco la opción de ayudarles a preparar las charlas.

Gracias y nos vemos el jueves!

Enrique (@otikik)

Manuel Ortega

unread,
Oct 25, 2017, 6:24:08 AM10/25/17
to Madrid.rb
Hola a todos!

soy nuevo en el mundo Ruby, mi nombre es Manuel Ortega y tengo experiencia de más de 7 años como desarrollador de software en el mundo PHP y Laravel. Desde hace cuatro meses a raíz de un proyecto que me ofrecieron estoy trabajando con Ruby y Rails. Estoy encantado con el cambio y tengo muchas ganas de aprender.

También tengo experiencia con protocolos de la "federated social web". En concreto con OStatus y ahora con el nuevo protocolo lanzado por la W3C: ActivityPub https://www.w3.org/TR/activitypub/#Overview Este protocolo ha sido recientemente implementado por Mastodon https://joinmastodon.org/ conocéis este proyecto?

Bueno, aquí viene la propuesta. Mi idea es tomar la invitación para dar una charla. Así que si os parece puede preparar una charla para noviembre sobre ActivityPub haciendo una pequeña implementación usando Ruby y haciendo referencia a su implementación en Mastodon. La idea es montar una charla al estilo de esta sobre blockchain https://github.com/Haseeb-Qureshi/lets-build-a-blockchain

Que os parece? si os parece bien me puedo poner a trabajar para tenerla charla lista para finales de noviembre. Y también agradecería alguna revisión del código a mostrar en la charla.

Igual me pasare el jueves al terracismo y puedo contaros más.

Saludos,
Manuel

Enrique Garcia Cota

unread,
Oct 25, 2017, 10:55:38 AM10/25/17
to madr...@googlegroups.com
Suena estupendo, Manuel!

Si quieres pásate este jueves y hablamos de ello.

Muchas gracias por ofrecerte!

Enrique

--
Has recibido este mensaje porque estás suscrito al grupo "Madrid.rb" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a madrid-rb+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a madr...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/madrid-rb.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Manuel Ortega

unread,
Oct 25, 2017, 4:35:47 PM10/25/17
to Madrid.rb
Genial!

hasta mañana!
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a madrid-rb+...@googlegroups.com.

Oscar Martinez

unread,
Nov 2, 2017, 9:04:11 AM11/2/17
to Madrid.rb

Hola Enrique,


Primero que todo en hora buena por el estupendo evento mensual de Ruby que he tenido el placer de visitar algunas veces.


Soy nuevo programando en ruby y queria preguntarte si a lo mejor me puedes dar alguna orientacion con una pequeña aplicacion que estoy desarrollando y con la cual tengo un problemilla. Se trata de una pagina de trueque de productos utilizando una moneda virtual (creditos dentro de la aplicacion).


Mi problema es con la actualizacion del balance de cada usuario una vez que ha efectuado una transaccion.


Los modelos de la aplicacion son: User, Product and Order.


Quisiera que cada vez que un usuario haga un pedido ( aqui “order” hace las veces de una transaccion), el valor de la compra se añada al balance del usuario (aqui “price” hace las veces de cantidad o amount)


Veras en orders_controller las siguientes lineas de codigio que deberian pasar los valores a la DB:


@user.balance = balance: (@user.balance += @order.price)



Cuando yo sepa como efectuar estas actualizaciones del balance me gustaria discriminar el usuario entre comprador y vendedor de manera que el balance de uno se incremente y el otro se reduzca, segun el valor de la transaccion.


Por esta razon veras en order.rb las siguientes lineas que todavia esta inactivo

#has_one :buyer, :class_name => 'User', :foreign_key => 'buyer_id'

#has_one :seller, :class_name => 'User', :foreign_key => 'seller_id'

De manera que despues  @user.balance sea remplazado por algo asi como @buyer.balance y @seller.balance


De momento un usuario puede mirar su balance que por default es de 100 unidades. Asi mismo el usuario puede efectuar un pedido (order) y este quedara registrado en la DB.


! Mi  problema es que  no logro que el valor de la "order" pase a modificar el total del balance del usuario!


Crees que el codigo @user.balance = balance: (@user.balance += @order.price), tiene sentido?


En lugar de estar en orders_controller deberia estar en otra parte?


Cualquier orientacion que me puedas dar sera bienvenida.


Y si no tienes tiempo me gustaria lanzar esta consulta a la comunidad Ruby de Madrid. Sabe como podria hacerlo?


Muchas gracias y saludos!!

Oscar


A continuación te enseño el contenido de los ficheros relevantes:



User.rb:

class User < ActiveRecord::Base

devise :database_authenticatable, :registerable,

:recoverable, :rememberable, :trackable, :validatable


validates :fullname,presence: true

validates :description, presence: false

validates :balance, presence: true, numericality:true


before_validation :load_defaults


def load_defaults

if self.new_record?

self.balance = 100

end

end

has_many :products

has_many :orders

end




order.rb

class Order < ActiveRecord::Base

belongs_to :user

belongs_to :product

#has_one :buyer, :class_name => 'User', :foreign_key => 'buyer_id'

#has_one :seller, :class_name => 'User', :foreign_key => 'seller_id'


validates :price, presence: true

validates :product_id, presence: true

validates :user, presence: true

end


product.rb

class Product < ActiveRecord::Base

belongs_to :user

has_many :orders

end







orders.controller

class OrdersController < ApplicationController


before_action :authenticate_user!


def create

@order = current_user.orders.create(order_params)

@user.balance = balance: (@user.balance += @order.price)

@user.balance = balance: (@user.balance -= @order.price)

redirect_to user_orders_path

end

end


def user_orders

@orders = current_user.orders

end


private

def order_params

params.require(:order).permit(:price, :user_id, :product_id, :seller_id, :buyer_id)

end

end




users:controller.rb

class UsersController < ApplicationController


def show

@user = User.find(params[:id])

@products = @user.products

end

end




products_controller.rb

class ProductsController < ApplicationController

before_action :set_product, only: [:show, :edit, :update, :destroy]

before_action :authenticate_user!, except: [:show]

def index

@products = current_user.products

end


def show

end


def new

@product = current_user.products.build

end

def edit

end


def create

@product = current_user.products.build(product_params)


respond_to do |format|

if @product.save

format.html { redirect_to @product, notice: 'Product was successfully created.' }

format.json { render :show, status: :created, location: @product }

else

format.html { render :new }

format.json { render json: @product.errors, status: :unprocessable_entity }

end

end

end


def update

respond_to do |format|

if @product.update(product_params)

format.html { redirect_to @product, notice: 'Product was successfully updated.' }

format.json { render :show, status: :ok, location: @product }

else

format.html { render :edit }

format.json { render json: @product.errors, status: :unprocessable_entity }

end

end

end


def destroy

@product.destroy

respond_to do |format|

format.html { redirect_to products_url, notice: 'Product was successfully destroyed.' }

format.json { head :no_content }

end

end


private

def set_product

@product = Product.find(params[:id])

end


def product_params

params.require(:product).permit(:name, :description, :price)

end

end



views/users/show.html.rb

<p>

User name: <%= @user.fullname %>

</p>

<p>

Balance: <%= @user.balance %>

</p>





Schema.rb:

ActiveRecord::Schema.define(version: 20171031150052) do

create_table "orders", force: :cascade do |t|

t.integer "user_id"

t.integer "product_id"

t.integer "price"

t.datetime "created_at", null: false

t.datetime "updated_at", null: false

t.string "transactiontype"

t.integer "buyer_id"

t.integer "seller_id"

end

add_index "orders", ["product_id"], name: "index_orders_on_product_id"

add_index "orders", ["user_id"], name: "index_orders_on_user_id"


create_table "products", force: :cascade do |t|

t.string "name"

t.text "description"

t.integer "price"

t.datetime "created_at", null: false

t.datetime "updated_at", null: false

t.integer "user_id"

end

add_index "products", ["user_id"], name: "index_products_on_user_id"


create_table "users", force: :cascade do |t|

t.string "email", default: "", null: false

t.string "encrypted_password", default: "", null: false

t.string "reset_password_token"

t.datetime "reset_password_sent_at"

t.datetime "remember_created_at"

t.integer "sign_in_count", default: 0, null: false

t.datetime "current_sign_in_at"

t.datetime "last_sign_in_at"

t.string "current_sign_in_ip"

t.string "last_sign_in_ip"

t.datetime "created_at", null: false

t.datetime "updated_at", null: false

t.string "fullname"

t.string "description"

t.integer "balance"

end

add_index "users", ["email"], name: "index_users_on_email", unique: true

add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true

end











Juan Matías

unread,
Nov 2, 2017, 12:31:41 PM11/2/17
to madr...@googlegroups.com
Hola Oscar, 

te recomiendo que escribas un nuevo email con el asunto de tu problema para tratarlo en una conversación aparte a la de la reunión. 

Saludos!


Oscar Martinez

unread,
Nov 2, 2017, 4:22:08 PM11/2/17
to madr...@googlegroups.com
Gracias Juan,
Asi lo haré.
Saludos
Oscar

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a madrid-rb+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a madr...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/madrid-rb.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Madrid.rb" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/madrid-rb/8U9Sr-DvLgI/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a madrid-rb+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages