Rails / Arel User.where(:id =&gt; <some other =“”table =“”>。user_id)</some>

时间:2013-04-25 08:05:06

标签: ruby-on-rails associations arel

嘿,我刚刚回到轨道,我忘记了与一些协会合作所需的很多东西。

问题:

我有两个表格,Customer包含fiels iduser_id以及User字段id。我希望获得一个Users数组,以便Customer user_idid的{​​{1}}。我知道如何在SQL中执行此操作,但忘记了如何在Ariel中执行此操作。

修改

所以我想我需要解释一下。我正在接管一个现有的项目。用户和客户之间存在一对一的关系,但只有部分用户拥有相关的客户实体,因此在大多数情况下调用User将返回user.customer。我需要编辑当前列出所有用户的页面,但现在我只需要列出拥有客户记录的用户。

以前的开发者已经创建了关系:

nil

我的控制器中有以下代码:

class Customer
  belongs_to :user, :class_name => "Refinery::User"
end

Refinery::User.class_eval do
  has_one :customer
end

任何帮助都会很棒,谢谢!

2 个答案:

答案 0 :(得分:1)

您可以在两个类中定义关联,客户为belongs_to,用户为has_many

然后,您就可以使用Users.find(id).customers等。

rails documentation很好地解释了这一点 - 看一下客户和订单的例子。

<强>更新 关注您的问题更新 - 尝试

User.where("customer.id IS NOT NULL")

@users = Refinery::User.where("customer.id IS NOT NULL").paginate(:page => params[:page])

答案 1 :(得分:0)

您不需要任何Ariel请求。

用户:

class User < ActiveRecord::Base
  has_many :customers
end

客户:

class Customer < ActiveRecord::Base
  belongs_to :user
end

代码:

customer = Customer.find(1)
users = customer.users