Reputation: 305
I run a insert statement on ruby on rails. But failed. This is the code:
class BookmarkController < ApplicationController
def index
if request.post?
@user_new = Bookmark.new(params[:user_new])
tags = @user_new.tags.split(",")
@user_new = Bookmark.new(params[:user_new])
query = "INSERT INTO bookmark (title , url, tags) VALUES (#{@user_new.title}, #{@user_new.url}, #{tags[0]}) "
Bookmark.connection.execute(query);
end
end
But the output is :
ActiveRecord::StatementInvalid in BookmarkController#index
SQLite3::SQLException: near ".": syntax error: INSERT INTO bookmark (title , url, tags) VALUES (abhir, www.mrabhiram.tumblr.com, tumblr)
Can anyone suggest me the proper way to insert records using SQL insert statement?
Upvotes: 1
Views: 17369
Reputation: 1003
You can write
MOdel.connection.insert("INSERT INTO table_name(fields) VALUES('value')")
it's working...
Upvotes: 2
Reputation: 2746
Assuming Bookmark
is subclassed from ActiveRecord
, AR will save this for you - no need to write custom SQL - the save
method will take care of this. You can read more about relevant ActiveRecord functionality here
class BookmarkController < ApplicationController
def index
if request.post?
@user_new = Bookmark.new(params[:user_new])
tags = @user_new.tags.split(",")
@user_new = Bookmark.new(params[:user_new])
#query = "INSERT INTO bookmark (title , url, tags) VALUES (#{@user_new.title}, #{@user_new.url}, #{tags[0]}) "
#Bookmark.connection.execute(query);
# The save method will insert the record into the database.
@user_new.save()
end
end
Upvotes: 2
Reputation: 96594
You need quotes on your 'values' data. Something like:
query = "INSERT INTO bookmark (title , url, tags) VALUES ('#{@user_new.title}', '#{@user_new.url}', '#{tags[0]}') "
Upvotes: 0