创建了一个数据库,我试图将它连接到我的模型并仅通过模型执行SQL查询。该怎么办?

时间:2012-07-30 10:14:43

标签: ruby-on-rails

这段代码究竟出了什么问题?以及如何运行此代码? 因为我不熟悉红宝石,请解释我一点。请帮忙!!!

my_connection_base.rb

类MyConnectionBase<的ActiveRecord ::基

client = Mysql2 :: Client.new(:host =>“localhost”,:database =>“flipkart_project_development”,:table =>“users”,:username =>“flipkart_project”,:password =>“mypass”)

results = client.query(“SELECT * FROM users”)

放置结果

2 个答案:

答案 0 :(得分:0)

在Rails中,您不需要编写原始SQL查询。

将所有数据库配置放在config / database.yml文件中,如下所示。

development:
  adapter: mysql2
  database: flipkart_project_development
  username: flipkart_project
  password: yourpass
  pool: 5
  timeout: 5000
test:
  adapter: mysql2
  database: flipkart_project_test
  username: flipkart_project
  password: yourpass
  pool: 5
  timeout: 5000

production:
  adapter: mysql2
  database: flipkart_project_production
  username: flipkart_project
  password: yourpass
  pool: 5
  timeout: 5000

Rails将负责建立连接和执行查询。

在您的情况下,生成名为user

的模型
 rails g model user

在您的项目中,您可以获取以下所有用户。

User.all
#This will generate the SQL query "select * from users" 
#and will return the records as user objects.

同时查看migrations

答案 1 :(得分:0)

给定的代码很难按需执行:它将在加载模型时执行。它应该放在一个方法中:

class MyConnectionBase < ActiveRecord::Base   
  def some_method
    client = Mysql2::Client.new(:host => "localhost", :database => "flipkart_project_development", :table => "users" , :username => "flipkart_project", :password => "mypass")
    results = client.query("SELECT * FROM users")
    puts results
  end
end

然后可以在MyConnectionBase.some_method的控制器中调用它。 但是为什么你想这样做完全逃避了我。完成所有Rails方式会好得多(参见上面的评论)。