Tag: 外键

使用foreign_key和链接表的Rails模型

我正在尝试为rails项目上的ruby创建一个模型,以建立不同单词之间的关系。 可以把它想象成一个字典,其中两个单词之间的“链接”表明它们可以同义使用。 我的数据库看起来像这样: Words —- id Links —– id word1_id word2_id 如何使用链接表在两个单词之间创建关系。 我试图创建模型,但不知道如何使链接表发挥作用: class Word ‘Word’, :foreign_key => ‘word1_id’ end

如何在Rails 3中通过嵌套表单传递外键属性

我有三个型号: class Client :balancesheets class Balancesheet :destroy accepts_nested_attributes_for :investment_assets, :allow_destroy => true class InvestmentAsset < ActiveRecord::Base belongs_to :balancesheet belongs_to :client 我有两个与外键client_id有关的问题。 首先,当我创建新的余额表时,我使用collection_select从列表中选择客户端。 我宁愿将新的资产负债表链接放在客户端显示页面上,只是将客户端ID传递给表单,这样我就不必从列表中选择客户端或在字段中键入它。 首先,我该怎么做? 其次,investment_asset模型嵌套在balancesheet表单中。 除了investment_asset的client_id属性为空之外,一切正常。 我不知道为什么,因为我的协会似乎没问题。 所以问题是,如何通过嵌套表单传递此client_id属性? 我可以发布模型或控制器,只是让我知道。 更新我已经在这里找到了我的第一个问题的答案。 但是,我仍然试图找出基于该答案的第二部分,即如何通过嵌套表单传递此client_id? 要显示在创建资产负债表时如何通过用户ID,这里是客户端显示页面链接: @client.id) %> 在资产数据表中,我有一个隐藏的字段: 在资产负债表控制器中,这是新的操作: @balancesheet = Balancesheet.new(:client_id => params[:id]) 这很好用。 所以对于investment_asset,我使用的是Ryan Bates nested_form gem ,它对链接有一些不同的语法。 因此,在资产数据表中,添加新的investment_asset的链接是: 我无法弄清楚如何传递用户ID,就像我在资产负债表上所做的那样: (:id => @client.id) 我可以在invest_asset控制器中的新操作中添加相同的内容并添加隐藏字段,但我不确定如何在链接上传递它。 思考?

Rails模型与外键本身

我有一个Oracle DB模式,其中包含一个“用户”表。 此表有两个非空外键给编辑器和创建者,它们也是用户。 架构转储如下所示: create_table “users”, :force => true do |t| t.integer “creator_id”, :precision => 38, :scale => 0, :null => false t.integer “editor_id”, :precision => 38, :scale => 0, :null => false end add_foreign_key “users”, “users”, :column => “creator_id”, :name => “r_user_creatorid”, :dependent => :nullify add_foreign_key “users”, “users”, :column => “editor_id”, :name => “r_user_editorid”, […]

Rails 4.2外键

Rails 4.2新增支持添加和删除外键(在迁移中),例如: # add a foreign key to `articles.author_id` referencing `authors.id` add_foreign_key :articles, :authors 我不明白的是:这是怎么回事 add_foreign_key :articles, :authors 不同于此: add_column :articles, :author_id, :integer 谢谢你的任何澄清!

Rails在单个表单上更新多个模型

我正在编写一个使用formtastic来管理BusinessUnit模型的表单,但是在创建新的BusinessUnit时,它还必须创建许多其他记录类型。 模型之间的关联如下: class BusinessUnit < ActiveRecord::Base has_many :business_unit_sites has_many :locations class BusinessUnitSite < ActiveRecord::Base belongs_to :site belongs_to :business_unit class Site < ActiveRecord::Base has_many :locations has_many :business_unit_sites class Location < ActiveRecord::Base belongs_to :business_unit belongs_to :site 创建BusinessUnit时,还必须使用BusinessUnitSite作为连接表创建站点。 此外,应创建一个位置记录,该记录必须保存新站点记录的外键,这是我遇到问题的地方。 我可以使用嵌套表单创建一个新位置(如下所示),但必须手动创建站点。 false %> false %> “Location Name” %> 创建位置,站点记录并确保Location保存新创建的站点的外键的最佳方法是什么?

为什么Rails 5将“索引”改为“外键”?

如果你在Rails 4中有这个: t.references :event, index: true 现在你可以在Rails 5中使用foreign_key而不是index 。我不太明白为什么他们决定这样做,因为function保持不变,你要添加的是INDEX,而不是该列的FOREIGN KEY。

Rails 3中单个记录的多个外键?

我正在开发一个应用程序来管理注册课程的学生。 该应用程序将拥有可以登录和操作学生的用户。 用户还可以对学生发表评论。 因此,我们的三个主要课程是学生,用户和评论。 问题是我需要将个别评论与其他两个模型相关联:用户和学生。 所以我开始使用这样的基本代码…… class Student < ActiveRecord::Base has_many :comments end class User < ActiveRecord::Base has_many :comments end class Comment < ActiveRecord::Base belongs_to :student belongs_to :user attr_accessible :comment end 因此,在注释表中,单个记录将包含以下字段: id comment student_id user_id created_at updated_at 这提出了几个问题。 首先,用于创建关联对象的漂亮Rails语法分解。 如果我想发表新评论,我必须在外键之间进行选择。 所以… User.comments.create(attributes={}) 要么 Student.comments.create(attributes={}) 另一个选择是任意选择一个外键,并手动将其添加到attrs哈希。 所以… User.comments.create(:comment => “Lorem ipsum”, :student_id => 1) 这个选项的问题是我必须在我的评论模型中列出attr_accessible下的student_id。 […]

rails中的多列主键

我正在尝试将桌面应用程序迁移到rails(也处理相当老式的现有数据库)。 问题是我在一列中没有唯一的ID,但它是表的三列,保证了记录的唯一性。 鉴于我有三个表: authors author_name, author_letter, author_nr1, author_nr2 … titles titel_nr, titel_name, … author_titles titel_nr, author_letter, author_nr1, author_nr2 作者的“主键”包括author_letter,author_nr1,author_nr2 here。 那么我需要一种多列主键来使rails关联工作吗? 或者我在这方向走错了方向?

如何在我的灯具中加载HABTM与外键关系?

我有以下两个模型:School和User,以及它们之间的HABTM关系,带有连接表。 在此连接表中,引用User表的外键不是user_id而是student_id 。 class School “User”, :join_table => “schools_students”, :foreign_key => “student_id” end class User “School”, :join_table => “schools_students”, :foreign_key => “school_id” end 我想在我的用户和学校设备中创建一个学校和一个用户,但在User中定义的foreign_key似乎是个问题。 fixtures/users.yml : user1: name: Student studying_schools: school1 fixtures/schools.yml : school1: name: School 1 active: true students: user1 加载上面的灯具会返回一个ActiveRecordexception: ActiveRecord::StatementInvalid: Mysql::Error: Unknown column ‘user_id’ in ‘field list’: INSERT INTO schools_students (student_id, user_id) […]

Rails has_one与类名和外键

我有一个Rails模型,我使用两个has_one关系: requester和friend 。 在控制台中我使用: f = FriendRequest.all f[0].requester 我得到ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: users.requester_id: SELECT “users”.* FROM “users” WHERE “users”.”requester_id” = 4 LIMIT 1 。 我真的不知道如何用类名和指定记录的键指定`has_one’关系。 这是我的模特: class FriendRequest “User”, :foreign_key => “requester_id” has_one :friend, :class_name => “User”, :foreign_key => “friend_id” end 我怎么能这样做? 在belongs_to关系中,我使用相同的,显然用belongs_to替换has_one 。 谢谢!