ActiveRecord向后执行连接

时间:2014-09-11 03:22:30

标签: ruby-on-rails ruby activerecord rails-activerecord

我是Rails和Ruby的新手,并且认为这是一个相当简单的设置问题。我有两个模型foodmeasurement,它们如下所示:

食物: nameserving_sizemeasurement_id[...]

衡量name

food.rb

has_one :measurement

measurement.rb

has_many :foods

(我也尝试过:食物: belongs_to :measurement测量: belongs_to_many以及其他一些场景)

我正在尝试根据food.measurement_id显示测量名称属性,在SQL中它将是:

SELECT *
FROM Food
JOIN Measurement on Food.measurement_id = Measurement.id

我已经尝试过将它放在我的标记中:<%= @food.measurement.name %>,但生成的SQL似乎倒退了我:

  

没有这样的专栏:measurements.food_id:SELECT“测量”。* FROM“测量”WHERE“测量”。“food_id”=?限制1

我还在我的控制器中尝试了许多不同的连接,所有这些连接都出现了类似的错误或错误,这些错误或错误告诉我我无处接近。

1 个答案:

答案 0 :(得分:2)

如果foods有一个measurement_id列,那么食物属于测量,测量有很多食物:

class Food < ActiveRecord::Base
  belongs_to :measurement
end

class Measurement < ActiveRecord::Base
  has_many :foods
end

现在打印食物的测量名称

<%= @food.measurement.name %>

生成的SQL看起来像

SELECT `measurements`.* FROM `measurements` WHERE `measurements`.`id` = 1 LIMIT 1