Rails 3 - 多个关联
Posted
技术标签:
【中文标题】Rails 3 - 多个关联【英文标题】:Rails 3 - multiple associations 【发布时间】:2011-09-05 11:44:15 【问题描述】:我有第一个名为 Cars 的表,其中包含有关汽车颜色、重量、价格等信息。
然后我有第二个表,例如 Other_informations。此表包含第一个表中关于该车的其他信息。
在第一个表 (Cars) 中是汽车的名称。如果我需要在这两个表之间创建关联,我可以使用:
汽车.rb
有很多:other_informations
其他信息.rb
belongs_to :汽车
在这种情况下,我必须在 car_id 上的表 Other_informations 中设置一列的名称,然后将创建关联。 至此一切正常。
但是现在 - 我只需要添加一个关联(从表 Other_informations 到表 Cars - 与第一个关联类型相同)。
我试图做这样的事情: 汽车.rb
has many :other_informations
其他信息.rb
belongs_to :car
belongs_to :car2
然后在使用的视图中:
data.car2.name_of_the_car_from_first_table**
但不幸的是,这对我没有用...有人可以帮助我吗,如果可以这样做吗?
提前谢谢你
【问题讨论】:
【参考方案1】:我不确定我是否理解您的问题 - 您是否希望在不同的汽车之间共享 OtherInformation?像 OtherInformation 可以属于许多不同的 Cars 吗?
那么你需要某种多对多的关系。阅读: http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many
编辑(阅读您的 cmets 后):
belongs_to car, :class_name => "Car", :foreign_key => "to_col1"
belongs_to another_car, :class_name => "Car", :foreign_key => "to_col2"
假设您的 OtherInformation 在数据库表中有两列:to_col1
和 to_col2
以下是关联的工作方式:
other_info = OtherInformation.first
first_car = other_info.car
second_car = other_info.another_car
second_car_name = other_info.another_car.name
#etc...
【讨论】:
我将尝试用一个简单的例子来解释它:表Cars
有 2 列 - id 和 name。表 Other_informations
有 3 列:id、col1、col2。 col1 和 col2 是表 Cars 中汽车的 ID。现在我有来自表 Other_informations
的语句 => 我知道表 Cars 中汽车的 ID(2 个 ID - col1 和 col2) - 但我现在不知道,如何获取汽车的名称(来自表 Cars)。
好的。在我的答案中查看上面的链接,了解您可以为 belongs_to 关联传递的选项列表,例如 :foreign_key, :class_name
好吧,我还在苦苦挣扎...我在我的 car.rb 中使用过 belongs_to :car, :foreign_key => "to_col2"
- to_col2 是我的数据库表中的外键。如果我尝试打印汽车的名称,我将得到 undefined method car_name' for 2:Fixnum**. What could be wrong? And one question yet - I used
belongs_to :car, :foreign_key => "to_col2"` - 这意味着我通过 **car 建立了关系 也可以通过 to_col2?
检查我的编辑 - 对我来说,在答案中写帖子比在评论中更容易:)
哥们,我爱你!!!你解决了我下午的噩梦。我总是在与联想作斗争......以上是关于Rails 3 - 多个关联的主要内容,如果未能解决你的问题,请参考以下文章