I’m very much a rookie with Rails so feel free to clue me in
I have two tables: Series, Paintings
I’m trying to set this one_to_many up so that I have many paintings
within a series i.e
Series: italy
Paintings: pic1, pic2, pic3, etc…
When rails saves the painting and series, it repeats the series for
each painting:
Table Dump
(dev) kmiller /home/kmiller/workspace/test:echo ‘select * from series’
| $MYSQL -Dtest_development -t
±—±------+
| id | desc |
±—±------+
| 1 | italy |
| 2 | italy |
| 3 | italy |
±—±------+
(dev) kmiller /home/kmiller/workspace/test:echo ‘select * from
paintings’ | $MYSQL -Dtest_development -t
±—±----------±----------±-------------±----------------------
±----------±-------±------±-------+
| id | parent_id | series_id | content_type | filename |
thumbnail | size | width | height |
±—±----------±----------±-------------±----------------------
±----------±-------±------±-------+
| 1 | NULL | 1 | image/jpeg | 31032008010.jpg |
NULL | 124730 | 500 | 375 |
| 2 | 1 | NULL | image/jpeg | 31032008010_thumb.jpg |
thumb | 2743 | 50 | 38 |
| 3 | NULL | 2 | image/jpeg | 31032008012.jpg |
NULL | 128985 | 500 | 375 |
| 4 | 3 | NULL | image/jpeg | 31032008012_thumb.jpg |
thumb | 3090 | 50 | 38 |
| 5 | NULL | 3 | image/jpeg | 31032008011.jpg |
NULL | 131269 | 500 | 375 |
| 6 | 5 | NULL | image/jpeg | 31032008011_thumb.jpg |
thumb | 2878 | 50 | 38 |
±—±----------±----------±-------------±----------------------
±----------±-------±------±-------+
Shouldn’t the relevant painting rows all point to a single, unique
series row? At least that’s what I wanted to happen. I also tried
belongs_to in the Painting table but got the same result.
Here’s the code:
Models:
class Series < ActiveRecord::Base
has_many :paintings
end
class Painting < ActiveRecord::Base
has_one :series, :foreign_key => ‘series_id’
has_attachment :content_type => :image,
:storage => :file_system,
:max_size => 10.megabytes,
:resize_to => ‘500x500>’,
:thumbnails => { :thumb => ‘50x50>’ },
:storage => :file_system,
:path_prefix => ‘/public/uploads’
validates_as_attachment
end
ActiveRecord::Schema.define(:version => 2) do
create_table “paintings”, :force => true do |t|
t.integer “parent_id”
t.integer “series_id”
t.string “content_type”
t.string “filename”
t.string “thumbnail”
t.integer “size”
t.integer “width”
t.integer “height”
end
create_table “series”, :force => true do |t|
t.string “desc”
end
end
Controller:
class PaintingsController < ApplicationController
def index
@paintings = Painting.find(:all, :conditions => { :thumbnail =>
nil })
end
def new
@series = Series.new
@painting = Painting.new
end
def create
@series = Series.new(params[:series])
@painting = @series.paintings.build(params[:painting])
sleep 4
if @series.save
flash[:notice] = “Added painting”
redirect_to paintings_path
else
render :action => ‘new’
end
end
end
View
<% form_for(:painting, :url => { :action => “create” }, :html =>
{ :multipart => true }) do |f| %>
series:
<%= text_field :series, :desc %>
image:
<%= f.file_field :uploaded_data %>
Appreciate any help! - thanks