我正在尝试根据其父表中的键检索子对象。例如,我有一个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可能是错误的,但这是一种非常简洁的方式来显示它。
答案 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)