Ruby on rails:将单个模型的2个引用添加到另一个模型

时间:2014-09-01 19:26:25

标签: ruby-on-rails forms database-design rails-models

我想知道在rails 4.0上的ruby中实现我的情况的正确方法。

假设我有2个名为 House 订单的模型。

我的订单表应该有两列都引用一个房屋模型。

在这种情况下,这两个模型之间的关系应该是什么? 注意:我不需要对房屋模型中的订单模型进行任何引用。

我想在我的订单表

中有这样的东西
t.references :house, as:from (this should create a column named from and should be of type integer, index of house table
t.references :house, as:to (this should create a column named to and should be of type integer, index of house table

我想在订单模型中使用这种类型的关系,因为我想在我的订单中采用类似

的房屋字段
<%= form_for @order do |f| %>
  ... # order fields
  <%= f.fields_for :house(from) do |i| %>
    ... # your house forms
  <% end %>
  <%= f.fields_for :house(to) do |i| %>
    ... # your house forms
  <% end %>
  ...
<% end %>

在rails中有没有具体的方法?

P.S:我已在此处阅读此帖,但我认为这并不能完全解决我的问题。 Adding a Model Reference to existing Rails model

1 个答案:

答案 0 :(得分:0)

添加此答案以防万一Surya的代码不起作用 - 我习惯于必须指定foreign_key:

class Order < ActiveRecord::Base
  belongs_to :from_house, :class_name => "House", :foreign_key => "from_id"
  belongs_to :to_house, :class_name => "House", :foreign_key => "to_id"
end

确保Order上有两个属性 - 一个属于from_id,另一个属于to_id。从现在开始,您可以拨打order.from_houseorder.to_house