No tengo idea de qué salió mal pero no puedo conseguir que belongs_to funcione con la opción: class_name. ¿Podría alguien iluminarme? ¡Muchas gracias!belongs_to with: class_name option failed
Aquí hay un recorte de mi código.
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.text :name
end
end
def self.down
drop_table :users
end
end
#####################################################
class CreateBooks < ActiveRecord::Migration
def self.up
create_table :books do |t|
t.text :title
t.integer :author_id, :null => false
end
end
def self.down
drop_table :books
end
end
#####################################################
class User < ActiveRecord::Base
has_many: books
end
#####################################################
class Book < ActiveRecord::Base
belongs_to :author, :class_name => 'User', :validate => true
end
#####################################################
class BooksController < ApplicationController
def create
user = User.new({:name => 'John Woo'})
user.save
@failed_book = Book.new({:title => 'Failed!', :author => @user})
@failed_book.save # missing author_id
@success_book = Book.new({:title => 'Nice day', :author_id => @user.id})
@success_book.save # no error!
end
end
medio ambiente:
rubí 1.9.1-P387 Rails 2.3.5
me importa tener buenas claves externas. No aplicaría la sugerencia sobre el cambio de nombre de la columna, ya que es más claro lo que está sucediendo cuando las columnas tienen el nombre correcto. –
De cualquier manera funciona. Lo que tenga sentido para usted y su equipo es lo correcto. :) –
Y pensar que class_name: 'User' hubiera bastado – Donato