Forum: Ruby on Rails One to Many Relationship Issues

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
david (Guest)
on 2006-04-02 05:17
Hi,

I am having issues with a one to many relationship(it never works :-)).
Jokes aside, I am getting an error:

Mysql::Error: #23000Cannot add or update a child row: a foreign key
constraint fails: INSERT INTO adverts (`image_url`, `price`, `title`,
`website_url`, `description`, `user_id`) VALUES('bb', 22.0, 'aa',
'www.drill.com/cordless', 'bb', 0)

The user_id(last column) needs to be 1, and its 0

Session dump: ---
flash: !ruby/hash:ActionController::Flash::FlashHash {}
:user_id: 1

models:
class Advert < ActiveRecord::Base
    belongs_to :user
end

class User < ActiveRecord::Base
  has_many :advert
end

adverts controller:
def create
    @advert = Advert.new(params[:advert])
    if @advert.save
      flash[:notice] = 'Advert was successfully created.'
      redirect_to :action => 'list'
    else
      render :action => 'new'
    end
  end

So its seems that the user_id is not passed into the SQL statement. Do I
need to change my create function? What needs to be added. I thought
Rails takes care of this type of plumbing...

Please help.

Here is the SQL Tables
create table users (
  id              int           not null auto_increment,
  name		      varchar(100)  not null,
  hashed_password char(40)      null,
  email          varchar(255)  not null,
  city           varchar(255)  not null,
  state          varchar(255)  not null,
  phone          varchar(255)  not null,
  website        varchar(255)  not null,
  primary key (id)
);

create table adverts (
 id              int           not null auto_increment,
 title           varchar(100)  not null,
 description     text          not null,
 image_url       varchar(200)  not null,
 price           decimal(10,2) not null,
 website_url       varchar(255)  not null,
 user_id	     int 	       not null,
 constraint fk_adverts_users  foreign key (user_id) references
users(id),
 primary key (id)
);
Jeremy H. (Guest)
on 2006-04-02 05:33
(Received via mailing list)
Try something like @user.adverts.create (params[:advert])

On 4/1/06, david <removed_email_address@domain.invalid> wrote:
> The user_id(last column) needs to be 1, and its 0
> class User < ActiveRecord::Base
>       render :action => 'new'
> create table users (
>
>  primary key (id)
> );
>
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Rails mailing list
> removed_email_address@domain.invalid
> http://lists.rubyonrails.org/mailman/listinfo/rails
>


--
Jeremy H.
http://www.jeremyhuffman.com
This topic is locked and can not be replied to.