Tag: 外键关系

如何在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上创建表时需要创建外键吗?

我现在开始使用Rails,我在论坛中查看,但我找不到任何可以解决我问题的方法。 在这里,我有一个分类表,它只有一个列的名称(类别中没有重复)所以我希望名称是主键,然后我有一个名称,main_photo,描述的产品表我想说一个产品只有一个类别,我是否需要在产品中添加一个名为category的列作为外键? 一个类别可以提供许多产品。 那么在类别模型中我怎么说名称是主键,我怎样才能在产品类别和类别中对应的主键名称之间进行对应?

Rails两个模型之间的多个关联

我在Rails 3应用程序中有Flight,Person和Glider模型。 我已经定义了自定义关系,因为我需要多个外键引用来自flight表的Person。 协会只能单向工作。 class Flight “Person” belongs_to :instructor, :class_name => “Person” belongs_to :towplane_pilot, :class_name => “Person” belongs_to :airplane_instructor, :class_name => “Person” belongs_to :glider belongs_to :rep_glider, :class_name => “Glider” belongs_to :departure_airfield, :class_name => “Airfield” belongs_to :arrival_airfield, :class_name => “Airfield” end class Glider “rep_glider_id”, :class_name => “Flight” end class Person “pilot_id”, :class_name => “Flight” has_many :instructed_flights, […]

Rails:非id外键查找ActiveRecord

我希望ActiveRecord通过表中的非id列进行查找。 当我向你提供我的代码示例时,希望这很清楚。 class CoachClass < ActiveRecord::Base belongs_to :coach end class Coach ‘user_name’ end 当我做一个coach_obj.coach_classes ,这正确地触发了 SELECT * FROM `coach_classes` WHERE (`coach_classes`.user_name = 2) (2是教练的id ,这是我的问题。) 我想让它触发 SELECT * FROM `coach_classes` WHERE (`coach_classes`.user_name = ‘David’) (’David’是那个教练的user_name ) user_name是唯一的,并且存在于两个表中。 出于某种原因,我不希望在coach_classes表中有一个coach_id 。

Rails:Scaffold自动执行一对多关系

不确定我是否正确阅读,但似乎Scaffold不会完全建立一对多的关系。 例如,如果我使用scaffold创建messages ,然后我想要对这些messages comments (一条message – >许多comments ),我必须经历并改变一切。 例如,我必须在comment的new视图中更改此内容 对此 然后更改Action以设置@message var …等等。 目前,Scaffold无法自动完成,对吧?

Rails是否需要数据库级约束?

我遇到与以下post相同的问题。 所以我想知道,为什么Rails默认不支持生成外键? 不是必要的吗? 或者我们应该手动完成吗?

将foreign_key值传递给Rails控制器的更好方法

自从我开始深入挖掘forms,联想,哈希,符号以来已经差不多一个星期……但似乎没有你的帮助我无法解决这个难题。 我正在开展一个展示不同画廊内容的项目。 基本思想是当用户看到画廊的名称(名称是链接)时能够点击所选择的名称。 然后显示属于此库的所有图像。 在底部应该有一个链接“在此库中添加图像”。 我的模特: class Gallery < ActiveRecord::Base attr_accessible :name has_many :pictures end class Picture < ActiveRecord::Base attr_accessible :image belongs_to :gallery end 我在gallery_id上为’pictures’表创建了索引。 我的大问题出现在这里,如何将gallery_id传递给控制器​​的动作’new’。 正如我在“使用Rails进行敏捷Web开发”中看到的那样,它可能是: @ gallery.id)%> 在这种情况下,似乎foreign_key:gallery_id公开在浏览器的URL栏中。 第二个问题是:gallery_id可用于控制器的“新”function,但“创建”function“消失”(导致错误“无法找到没有ID的图库”)。 当我在图片的_form中添加隐藏字段时,问题就消失了,在我的情况下: params[:gallery_id] %> 以下是我在“图片”控制器中的定义: def new @gallery=Gallery.find(params[:gallery_id]) @picture=@gallery.pictures.build end def create @gallery = Gallery.find(params[:gallery_id]) @picture = @gallery.pictures.new(params[:picture]) if @picture.save redirect_to(@picture, :notice => ‘Picture was […]