带有自定义列名的 Rails 的所属关系 [英] Rails belongs_to with custom column name
本文介绍了带有自定义列名的 Rails 的所属关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用旧数据库,该数据库为表 product
和 familia_producto
(rake db:schema:dump
)
I'm working with a legacy database that gives the following schema for the tables product
and familia_producto
(rake db:schema:dump
)
create_table "producto", primary_key: "barcode", force: true do |t|
t.string "codigo_corto", limit: 16, null: false
t.string "marca", limit: 35
t.string "descripcion", limit: 50
t.string "contenido", limit: 10
t.string "unidad", limit: 10
t.float "stock", default: 0.0
t.float "precio"
t.float "precio_neto"
t.float "costo_promedio"
t.float "fifo"
t.float "vendidos"
t.boolean "aplica_iva"
t.integer "otros_impuestos", limit: 2
t.integer "familia", limit: 2, default: 1, null: false
t.integer "id_tipo_producto", limit: 2, null: false
t.boolean "es_perecible"
t.float "dias_stock", default: 1.0
t.float "margen_promedio", default: 0.0
t.boolean "es_venta_fraccionada"
t.float "stock_pro", default: 0.0
t.float "tasa_canje", default: 1.0
t.float "precio_mayor"
t.float "cantidad_mayor"
t.boolean "es_mayorista"
t.boolean "estado"
t.boolean "precio_editable"
end
create_table "familia_producto", force: true do |t|
t.string "nombre", limit: 32, null: false
end
在模型中我有这个
class FamiliaProducto < ActiveRecord::Base
self.table_name = 'familia_producto'
has_many :productos, :class_name => 'Producto', :primary_key => 'barcode', :foreign_key => 'familia'
end
class Producto < ActiveRecord::Base
self.table_name = 'producto'
belongs_to :familia_producto, :class_name => 'FamiliaProducto'
end
但是当我调用 .familia
时,producto 对象向我抛出一个数字,而不是 FamiliaProducto
对象.
But when I call the .familia
the producto object throws me a number, not the FamiliaProducto
object.
2.1.0 :012 > p = Producto.all[0]
Producto Load (1.7ms) SELECT "producto".* FROM "producto"
=> #<Product......
2.1.0 :013 > p.familia
=> 2
那个 2
应该是 FamiliaProducto
对象.
That 2
should be the FamiliaProducto
object.
推荐答案
必须使用关联名称,还需要在belongs_to
You must use the name of the association, also need to add the foreign key to the belongs_to
# Returns a FamiliaProducto object
p = Producto.first
p.familia_producto
# Producto model
belongs_to :familia_producto, class_name: 'FamiliaProducto', foreign_key: 'familia'
# FamiliaProducto model
has_many :productos, class_name: 'Producto', foreign_key: 'familia'
# Returns an integer
p = Producto.first
p.familia
这篇关于带有自定义列名的 Rails 的所属关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文