2017-10-01 2 views
0

aujourd'hui, j'ai essayé de créer un nouveau modèle comme d'habitude j'ai créé mon premier contrôleur:Rails 4.2.1: ne peut pas créer enregistrement

rails g controller Newsletters 

Je crée mon modèle:

rails g model Newsletter 

Je mis à jour mon migration:

class CreateNewsletters < ActiveRecord::Migration 
    def change 
    create_table :newsletters do |t| 
     t.string :subject 
     t.text :message 
     t.string :recipient 
     t.boolean :send, default: false 

     t.timestamps null: false 
    end 
    end 
end 

Enfin j'ai couru ma migration:

rake db:migrate 

configurer mon contrôleur:

class NewslettersController < ApplicationController 
    def index 
    @newsletters = Newsletter.all 
    end 

    def show 
    @newsletter = Newsletter.find_by(id: params[:id]) 
    end 

    def new 
    @newletter = Newsletter.new 
    end 

    def create 
    @newletter = Newsletter.new(newsletter_params) 
    if @newsletter.save 
     flash[:success] = "Newsletter saved" 
     redirect_to newletter_path 
    else 
     render 'new' 
    end 
    end 

    def edit 
    end 

    def update 
    end 

    def destroy 
    newsletter = Newsletter.find_by(id: params[:id]).destroy 
    flash[:success] = "Successfully destroyed" 
    end 


    private 
    def newsletter_params 
     params.require(:newsletter).permit(:subject, :message, :recipient, :send) 
    end 
end 

est le problème maintenant ici. Lorsque je tente de créer un enregistrement dans la console que je reçois cette erreur:

irb(main):001:0> newsletter = Newsletter.create(subject: "test", message: "test test", recipient: "all") 
ArgumentError: wrong number of arguments (given 2, expected 0) 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_methods.rb:48:in `__temp__3756e646' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_methods.rb:379:in `clone_attribute_value' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_methods/dirty.rb:122:in `old_attribute_value' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_methods/dirty.rb:94:in `write_attribute' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_methods.rb:50:in `__temp__375726a6563647' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_assignment.rb:54:in `public_send' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_assignment.rb:54:in `_assign_attribute' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_assignment.rb:41:in `block in assign_attributes' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_assignment.rb:35:in `each' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/attribute_assignment.rb:35:in `assign_attributes' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/core.rb:559:in `init_attributes' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/core.rb:281:in `initialize' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/inheritance.rb:61:in `new' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/inheritance.rb:61:in `new' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.1/lib/active_record/persistence.rb:33:in `create' 
    from (irb):1 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.1/lib/rails/commands/console.rb:110:in `start' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.1/lib/rails/commands/console.rb:9:in `start' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:68:in `console' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
    from /Users/alexander/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/railties-4.2.1/lib/rails/commands.rb:17:in `<top (required)>' 
    from bin/rails:4:in `require' 
    from bin/rails:4:in `<main>'irb(main):002:0> 

Ce que j'ai essayé jusqu'ici:

  1. Je roulais tout en place et enlevé tous les fichiers générés et ont fait tout à la main à nouveau .
  2. installer à nouveau le paquet dans le cas où quelque chose est obsolète

Je ne comprends pas vraiment ce que l'erreur est donc si quelqu'un pouvait me aider je l'apprécierais beaucoup.

PS: J'ai lu sur github que cela pourrait être un problème avec le "rb-fsevent" petit bijou, mais mes journaux DonT montrer la même chose:

https://github.com/guard/listen/issues/431

MISE À JOUR:

Mon modèle newsletter

class Newsletter < ActiveRecord::Base 
end 

PS: Je courais rubis 2.3.0

+0

Pouvez-vous partager votre fichier de modèle 'Newsletter'? –

+0

Il est vide, je vais l'ajouter maintenant –

+0

Impossible de reproduire. –

Répondre

3

send est une méthode Ruby qui entraîne des problèmes lorsque vous avez un attribut avec le même nom. Il suffit de renommer cette colonne pour autre chose - comme email_send ou was_send et tout ira bien.

+0

Génial, vous étiez sur place. Je l'ai renommé "email_send" et tout fonctionne bien. Danke schön –

+0

Vous êtes les bienvenus, heureux que je puisse vous aider. – spickermann