On 9 July 2015 at 21:28, Bazley <1975...@gmail.com> wrote: > Each User has_one Character. Each Character has_one :profilepicture, of > class Picturething, which holds a Carrierwave mount_uploader to upload a > singe picture. Each Character has_many :standardpictures, also of class > Picturething. Picture upload is handled in views/users/edit, which hits the > update_pictures method in users_controller. > > The idea is to upload one standardpicture at a time. It seems to work, Rails > console > Picturething.all shows that a new Picturething has been added to > the database, and it is correctly displayed on the page. This is intended to > be one of the character.standardpictures. > > The weird thing is, somehow in this whole process, the character's > :profilepicture is also set to be the same picture that was uploaded. I > don't understand how this is happening. At no point do I have code saying > something like "@character.profilepicture = standardpicture", but somehow it > has decided that both the first :standardpicture and the :profilepicture are > one and the same. If the profilepicture exists, which it shouldn't yet, it > is displayed on the edit.html.erb page, where I have the line `<% if > @character.profilepicture.nil? %>`. It displays the uploaded picture here, > so clearly profilepicture is not nil, but it should be. > > How is this happening? > > character.rb: > > has_many :standardpictures, class_name: "Picturething", dependent: > :destroy > accepts_nested_attributes_for :standardpictures > has_one :profilepicture, class_name: "Picturething", dependent: > :destroy > accepts_nested_attributes_for :profilepicture > > picturething.rb: > > class Picturething < ActiveRecord::Base > belongs_to :character > mount_uploader :picture, CharacterpicUploader > validate :picture_size > end
You need two belongs_to here, one for each association. Use unique names, foreign_key and class_name here and in character.rb to specify which is which. Then obviously two _id fields. Currently it is conflating the two relationships. Colin -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLvP8gR8wj6HKU1HEYq%3DfHtbxcEWDSDPiGzhHynZuSBWbw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.