rails的范围find_by_id方法

时间:2012-04-17 00:08:50

标签: ruby-on-rails ruby-on-rails-3.2

假设我有一个包含两个模型PersonHouse的rails应用。每个Person对象都有House_id属性。

我想在Person模型中定义以下方法:

def locate_house
  current_house_id = house.find_by_id(person)
end

但我为house收到一个未定义的变量错误,我怎样才能确保它在范围内?

3 个答案:

答案 0 :(得分:2)

您正在尝试重写已构建到rails中的内容。使用belongs_to关系:

class Person < ActiveRecord::Base
    belongs_to :house
end

然后你可以这样做:

person.house

获得相关的房屋。

答案 1 :(得分:1)

您的模型 - House - 是一个需要大写的红宝石常量

def locate_house
  current_house_id = House.find_by_id(person)
end

答案 2 :(得分:0)

House是一个常数,需要像其他人所说的大写字母,请看Rails指南关于Active Record Models之间的关系。有许多可能的现实,很多可能是你正在寻找的。实际上,一个人可以有多个房子。