Tengo dos modelos, de artículos y productos de la siguiente manera:Rieles: belongs_to y has_many el uso de identificadores no estándar
irb(main):007:0> Item
=> Item(id: integer, identification_number: string, production_date: date,
created_at: datetime, updated_at: datetime, going_in: boolean)
irb(main):008:0> Product
=> Product(id: integer, sku: string, barcode_identification: string,
created_at: datetime, updated_at: datetime)
pensar en esto como un artículo es de un producto en particular.
He conseguido hacer referencia a todos los elementos de un producto en particular (Product.find (1) .items) a través de
class Product < ActiveRecord::Base
has_many :items, :foreign_key => "identification_number",
:primary_key => "barcode_identification"
end
pero me parece que no puede remitir el producto de una opción concreta. Esto es lo que tengo ahora:
class Item < ActiveRecord::Base
set_primary_key :identification_number
belongs_to :product, :foreign_key => "barcode_identification"
end
Y en cuanto a mi entender con referencia a: las bases de datos se refiere, que debería funcionar. Excepto que no. Tal vez me estoy perdiendo algo aquí? Soy bastante nuevo en los rieles (alrededor de un mes o menos)
¿Puede explicar por qué has_one funciona y belongs_to no para este escenario? Esperaría que belongs_to funcione, pero no es así. – ryanjones
Interesante. Trabajó para mi. Gracias. Aún me pregunto por qué pertenece_to no funciona –
@RonyVarghese 'belongs_to' debería funcionar en Item si especifica las claves externas y principales correctamente: ' belongs_to: product,: foreign_key => "número_de_identidad",: primary_key => "identificación_de_barreras" ' (tenga en cuenta que las claves son las mismas que en el 'has_many'!) Consulte los documentos para estos dos métodos para ver las distinciones sutiles: http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_one y http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/belongs_to – qix