Ruby,按键检索子对象

Ruby,按键检索子对象,ruby,ruby-on-rails-3,activerecord,join,inner-join,Ruby,Ruby On Rails 3,Activerecord,Join,Inner Join,我试图根据父对象表中的键检索子对象。例如,我有一个Customer类,它包含Stores表的“store\u id”键。如果一个客户有一个“store_id”键,我希望返回该store对象,而不是父客户对象 编辑:下面是一条sql语句,显示了我正在尝试做的事情 所以SQL语句看起来像这样 “选择门店。*从客户内部加入customers.store_id=storeS.id其中customers.id='9'上的门店” 我知道sql可能是错误的,但这是一种非常简洁的表达方式。我假设您使用的是带有开

我试图根据父对象表中的键检索子对象。例如,我有一个Customer类,它包含Stores表的“store\u id”键。如果一个客户有一个“store_id”键,我希望返回该store对象,而不是父客户对象

编辑:下面是一条sql语句,显示了我正在尝试做的事情

所以SQL语句看起来像这样

“选择门店。*从客户内部加入customers.store_id=storeS.id其中customers.id='9'上的门店”


我知道sql可能是错误的,但这是一种非常简洁的表达方式。

我假设您使用的是带有开箱即用配置的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 customer.store_id == 9
customer.store
或者,如果您只有客户密钥:

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

我假设您正在使用带有开箱即用配置的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 customer.store_id == 9
customer.store
或者,如果您只有客户密钥:

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

我不经常使用ActiveRecord,但我认为是这样的:

Store.find(customer.store_id)

我不经常使用ActiveRecord,但我认为是这样的:

Store.find(customer.store_id)

你说的“带回来”是什么意思?你能给我们看一些你想做的事情的示例代码吗?@Misha所以SQL语句应该是这样的。如果这是你想要的,你应该遵循PinnyM的答案。你说的“带回来”是什么意思?你能给我们看一些你想做的事情的示例代码吗?@Misha这样SQL语句就会是这样的。如果你想这样,你应该按照PinnyM的答案来做。请注意,对于
customer.store
来说,您需要
属于\u to:store
在您的
客户
模型上定义。@PinnyM我已经编辑了原始帖子,其中包含了一条sql语句来显示我正在做什么。为了澄清,我通常只假设我有一个customer.id。如果您使用带有默认值的rails(ActiveRecord作为ORM),则根本不需要编写任何SQL。我已经编辑了我的答案,以说明应该如何写。@PinnyM谢谢PinnyM!我希望我必须“触摸”客户对象,但我对rails是新手,因此我目前正在学习摒弃旧的做事方式。请注意,对于
Customer.store
来说,您需要
属于\u to:store
在您的
客户
模型上定义。@PinnyM我已经编辑了原始帖子,其中包含了一条sql语句来显示我正在做什么。为了澄清,我通常只假设我有一个customer.id。如果您使用带有默认值的rails(ActiveRecord作为ORM),则根本不需要编写任何SQL。我已经编辑了我的答案,以说明应该如何写。@PinnyM谢谢PinnyM!我希望我必须“接触”客户对象,但我对rails是新手,所以我目前正在学习如何摒弃旧的做事方式。