Tag: 数据库

如何使rails外部数据库调用?

所以我希望能够将一个外部数据库添加到我的config/database.yml然后从中建模一个表。 这可能吗? 我无法弄清楚如何。 “连接到不同型号的多个数据库 连接通常通过ActiveRecord::Base.establish_connection创建,并由ActiveRecord::Base.connection检索。 从ActiveRecord::Baseinheritance的所有类都将使用此连接。 但您也可以设置特定于类的连接。 例如,如果Course是ActiveRecord::Base ,但驻留在不同的数据库中,则可以说Course.establish_connection和Course及其所有子类将使用此连接。 此function是通过在ActiveRecord::Base中保留连接池来实现的,该连接池是由类索引的哈希。 如果请求连接,则retrieve_connection方法将上升到类层次结构,直到在连接池中找到连接。 “

如何创建rails迁移以删除/更改精度并按小数缩放?

我试图从我的数据库中的十进制(PostgreSQL NUMERIC )字段中删除精度和比例属性? 田野: t.decimal “revenue_per_transaction”, :precision => 8, :scale => 2 t.decimal “item_quantity”, :precision => 8, :scale => 2 t.decimal “goal_conversion”, :precision => 8, :scale => 2 t.decimal “goal_abandon”, :precision => 8, :scale => 2 t.decimal “revenue”, :precision => 8, :scale => 2 我需要在迁移中添加什么来将其更改为无限制的比例和精度,或者增加比例? 目前我正在达到规模限制并得到如下错误: ERROR: numeric field overflow 这是上下文: Heroku上的“PG ::错误 – 数字字段溢出”

Rails:’schema.rb’中的版本号是否用于任何东西?

既然Rails已经对时间戳进行了迁移 ,那么/db/schema.rb顶部的单个版本号似乎毫无意义。 在处理多个开发人员或多个分支时,有时版本号最终不正确。 Rails是否甚至利用了:version参数? 它是否有任何不正确的错误(如:它不反映最近应用的提交的时间戳)? 例: ActiveRecord::Schema.define(:version => 20100417022947) do # schema definition … end

Ruby on Rails:具有多个外键的模型关联

我正在研究User模型,每个用户都应该能够同时拥有学生和教师。 但是,由于学生和老师都是User类型,我的模型有点复杂。 这就是我现在正在尝试的。 Teacher_student_link class TeacherStudentLink “User” belongs_to :student, :class_name => “User” end 用户 class User { :student_id, :teacher_id }, :dependent => :destroy has_many :students, :through => :teacher_student_links has_many :teachers, :through => :teacher_student_links end 如果一切按照我的意图行事,我应该能做到 @user = User.new @user.students @user.teachers @user.student.teachers 我认为上面唯一的问题是我不能同时给teacher_student_link两个外键,但我不确定。 作为一种解决方法,我的模型中还没有teacher_id,只是让student.user给teacher打电话。 任何人都可以帮我解决这个问题吗? 更新:通过以下解决方案,我应该如何创建新链接? def become_student @user = user.find(params[:id]) @student_link = @user.student_links.create(:student_id => current_user.id) […]

在迁移中添加行

我想知道哪些是在Rails迁移中向数据库表添加记录的首选方法。 我读过Ola Bini的书(Jruby on Rails),他做了类似这样的事情: class CreateProductCategories < ActiveRecord::Migration #defines the AR class class ProductType “type”) end end 这很干净但是由于某种原因,它不适用于持续版本的导轨…… 问题是,如何使用默认数据(如用户或其他东西)填充数据库? 谢谢!

在连接表中,Rails缺少复合键的最佳解决方法是什么?

create_table :categories_posts, :id => false do |t| t.column :category_id, :integer, :null => false t.column :post_id, :integer, :null => false end 我有一个连接表(如上所述),其中的列引用了相应的类别表和posts表。 我想在categories_posts连接表中对复合键category_id,post_id强制执行唯一约束。 但是Rails不支持这个(我相信)。 为了避免我的数据中具有相同category_id和post_id组合的重复行的可能性, 在Rails中缺少复合键的最佳解决方法是什么? 我的假设是: 在这种情况下,默认的自动编号列(id:integer)无法保护我的数据。 ActiveScaffold可能会提供一个解决方案,但我不确定将它包含在我的项目中仅仅是为了这个单一function是否过度,特别是如果有更优雅的答案。

我需要帮助正确形成这个ActiveRecord关联

基本上,用户可以作为(或可能是两者)供应商和作为活动教员的成员参与一个或多个事件。 默认情况下,用户既不是供应商也不是教师,而是在事件的上下文中获得(或两者)状态(例如,用户已作为其成员被接纳为事件)学院)。 看起来我想说的是用户通过供应商或教师链接表中的任何一个(或两个)都有很多事件,但我不确定我是否会在我的Rails模型中表示这一点。 这是我到目前为止所尝试的内容: class User vendors has_many :events through => faculty end 这是我认为我需要进行的查询示例: Select * from vendors where user_id = 1; Select * from faculty where user_id = 1; 有人可以提供一些指导如何正确形成这个ActiveRecord关联? 更新: 所以,我已经尝试使用单表inheritance来解决这个问题,而我最终得到的用户表记录只包含一个用户类型。 虽然仍然使用单表inheritance,但如何让我的用户拥有多种类型? (我知道这实际上是一个多对多的关系;我只是不确定如何使用STI实现这一点。) id | first_name | last_name | birth_date | city | zip_code | email | type | created_at | updated_at —-+————+———–+————+——+———-+——-+———+—————————-+—————————- […]

Rails迁移将字符串转换为整数?

是否可以将字符串的字段更改为整数而不清除已输入的数据? 有问题的表的当前db结构是: create_table :people do |t| t.string :company_id 这可能是使用迁移吗? 我想也许在迁移中删除旧字段,创建一个整数的新字段 – 但我担心这将清除已经输入的所有数据。 谢谢, 丹尼

Rails 3 – 具有连接条件的多个数据库

我的环境: Ruby 1.9.2p290,Rails 3.0.9和RubyGem 1.8.8 不幸的是,遇到多个数据库时我遇到了问题。 情况是这样的:我有两个模型连接两个不同的数据库,并建立彼此之间的关联。 在每个模型中指定数据库连接,看起来像 class Visit < ActiveRecord::Base self.establish_connection "lab" belongs_to :patient end class Patient < ActiveRecord::Base self.establish_connection "main" has_many :visits end 遇到以下情况时出错了 @visits = Visit.joins(:patient) 错误:Mysql2 ::错误:表’lab.patients’不存在:SELECT visits 。* FROM visits INNER JOIN patients ON patients 。 id空 这里’病人’表在’主’数据库和’实验室’数据库中的’访问’表我怀疑执行代码时,Rails正在考虑’病人’表是’实验室’数据库[持有’访问’表的一部分]。

如何在Ruby on Rails中为所有模型动态更改Active Record数据库?

在我们的计划中,每个客户都有自己的数据库。 我们通过电子邮件发送链接,将它们连接到数据库。 该链接包含一个GUID,使程序知道要连接到哪个数据库。 如何以动态和编程方式将ActiveRecord连接到正确的数据库?