rubyforen.de
http://forum.ruby-portal.de/

Rails 4 habtm speichert nicht
http://forum.ruby-portal.de/viewtopic.php?f=14&t=26989
Seite 1 von 1

Autor:  frechdax [ 16 Apr 2017, 22:49 ]
Betreff des Beitrags:  Rails 4 habtm speichert nicht

Hallo Zusammen,

ich stelle gerade mein kleines Programm von 3.1.0 auf 4.1.1 um und scheiter an der HABTM-Speicherung.
Es ist weder meine erste noch die einzige M:N-Beziehung, unser Rails 2 und 3 liefen sie immer.
Daher gehe ich aktuell davon aus, dass es irgendwie an den Strong-Parameter liegt.

Folgende Tabellen habe ich angelegt:

rundmails: betreff inhalt
users: nick email
rundmails_users. rundmail_id user_id

Die Models haben folgenden Eintrag:


1
2
3

has_and_belongs_to_many :users, join_table: :rundmails_users
has_and_belongs_to_many :rundmails, join_table: :rundmails_users

"join_table: :rundmails_users" wurde bereits aufgrund einiger Einträge hinzugefügt

Im Controller wurde hinzugefügt:


1
2
3
4
5
6
7

def rundmail_params
params.require(:rundmail).permit(:betreff, :inhalt, :user_ids => [])
end
def user_params
params.require(:user).permit(:nick, :email, :rundmail_ids => [])
end

Auch hier habe ich die unterschiedlichen Schreibweisen "user_ids: []" ausprobiert.

Der Controller hat folgende create-Funktion:


1
2
3
4
5
6
7
8
9
10
11
12
13

def create
@user = User.first
@user2 = User.find(7)
@rundmail = Rundmail.new(rundmail_params)
@rundmail.users << @user
@rundmail.users << @user2
if @rundmail.save
render 'create'
else
render action: "new"
end
end


Beim Ausführen kommt immer wieder die gleiche Fehlermeldung:


1
2
3
4
5
6
7
8
9
10

[1m [35m (0.1ms) [0m BEGIN
[1m [36mSQL (0.2ms) [0m [1mINSERT INTO `rundmails` (`betreff`, `created_at`, `inhalt`) VALUES ('nn', '2017-04-16 20:10:18', 'nn') [0m
[1m [35mSQL (0.1ms) [0m INSERT INTO `rundmails_users` (`rundmail_id`, `user_id`) VALUES (80, 3)
[1m [36mSQL (0.1ms) [0m [1mINSERT INTO `rundmails_users` (`rundmail_id`, `user_id`) VALUES (80, 7) [0m
[1m [35m (28.9ms) [0m ROLLBACK
Completed 500 Internal Server Error in 85ms

NoMethodError (undefined method `name' for nil:NilClass):
app/controllers/rundmails_controller.rb:70:in
`
create'


Ich habe mir inzwischen schon alles mögliche an evtl. Dingen ausgeben lassen, ist valid, hat 2 user usw.
Validierungen sind allesamt auskommentiert, es kann also auch daran nicht liegen.
Gebe ich die 3 Befehle in MySQL (Serverversion 5.5) direkt ein, so ist alles bestens.

Habt Ihr eine Idee? Seh ich den Wald vor lauter Bäumen nicht?

Autor:  Quintus [ 16 Apr 2017, 23:29 ]
Betreff des Beitrags:  Re: Rails 4 habtm speichert nicht

Das Forum wird alsbald geschlossen, bitte auf die Mailingliste wechseln. Mehr Infos: http://forum.ruby-portal.de/viewtopic.php?f=7&t=26980 und https://www.ruby-lang.org/de/news/2017/04/14/ruby-de-list/

Vale,
Quintus

Autor:  frechdax [ 17 Apr 2017, 15:29 ]
Betreff des Beitrags:  Re: Rails 4 habtm speichert nicht

Oh, das ist schade... mit Mails wird man ja leider schon im Alltag zugespamt :/

Dennoch möchte ich die Lösung meines Problems kurz bekanntgeben - Ich mag keine Bugs *grrrrrrr*

Fündig wurde ich hier:

https://github.com/activescaffold/active_scaffold/issues/380

mit folgendem Eintrag:
I think there is a bug in activerecord 4.1.0 with has_cached_counter? and ruby 2.2. It was fixed on activerecord 4.1.2

Ich glaube, hier hät ich noch ewig probieren können...

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/