Je n'ai aucune idée de ce qui s'est mal passé mais je ne peux pas obtenir belongs_to avec l'option: class_name. Quelqu'un pourrait-il m'éclairer? Merci beaucoup!appartient à: l'option class_name échoue
Voici un extrait de mon code.
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
environnement:
rubis 1.9.1-P387 Rails 2.3.5
Je me soucie d'avoir de bonnes clés étrangères. Je ne voudrais pas appliquer la suggestion de renommer la colonne, car il est plus clair ce qui se passe quand les colonnes ont le bon nom. –
De toute façon fonctionne. Tout ce qui a du sens pour vous et votre équipe est la bonne chose à faire. :) –
Et penser que class_name: 'User' aurait suffi – Donato