我是Rails和Ruby的新手,并且认为这是一个相当简单的设置问题。我有两个模型food
和measurement
,它们如下所示:
食物: name
,serving_size
,measurement_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
我还在我的控制器中尝试了许多不同的连接,所有这些连接都出现了类似的错误或错误,这些错误或错误告诉我我无处接近。
答案 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