Ruby,按键检索子对象

时间:2012-01-12 03:28:31

标签: ruby ruby-on-rails-3 activerecord join inner-join

我正在尝试根据其父表中的键检索子对象。例如,我有一个Customer类,其中包含Stores表的“store_id”键。如果客户有“store_id”键,我想带回那个Store对象,而不是父Customer对象。

编辑:这是一个sql语句,显示我想要做的事情。

因此SQL语句看起来像这样。

“SELECT storeS。* FROM customers INNER JOIN store ON customers.store_id = storeS.id WHERE customers.id ='9'”

我知道sql可能是错误的,但这是一种非常简洁的方式来显示它。

2 个答案:

答案 0 :(得分:5)

我假设您正在使用具有开箱即用配置的rails(使用ActiveRecord)。

按照惯例,“customers”表中的“store_id”键应与“stores”表中的“id”字段匹配。您还应该设置以下类模型:

class Store < ActiveRecord::Base
  has_many :customers # this is not required for what you want to do here, but recommended
end

class Customer < ActiveRecord::Base
  belongs_to :store
end

假设这是真的,如果你有商店密钥,你可以这样做:

# assuming we have store key == 9
Store.find(key)

如果您已经有客户,也可以这样做:

# assuming we have customer.store_id == 9
customer.store

或者如果您只有客户密钥:

# assuming we have a customer key == 9
customer = Customer.find(9)
store = customer.store

答案 1 :(得分:0)

我没有经常使用ActiveRecord,但我认为就是这样:

Store.find(customer.store_id)