我有一个模型客户端有很多:旅游,协会。我正在使用此代码为所有客户提供他们的旅行,
render :json => Client.all(:include => :tours)
现在,需求已更改,此对象表示仅加载用户的巡视。每个游览都与一个用户关联,用户有很多:游览。我试过了
render :json => Client.all(:include => :tours, :conditions => ["tours.user_id = ?", params[:user_id]])
这使我的客户可以访问该用户,但会列出这些客户的所有游览。但是,我只想在每个客户端下列出该用户的游览。我可以使用:includes
吗?
client.rb
has_many :tours, :dependent => :destroy
user.rb
has_may :tours, :dependent => :destroy
更新
我认为最好添加一个例子来解释我的问题。假设有3个客户A,B,C。
现在,如果我们使用我的方法获取user1的响应,它将是这样的:
[
{
"name": "Client A",
....
"tours": [
{
"name": "Tour1",
....
},
{
"name": "Tour2",
......
},
{
"name": "Tour3",
.....
}
]
},
{
"name": "Client C",
....
"tours": [
{
"name": "Tour4",
...
},
{
"name": "Tour5",
...
},
{
"name": "Tour6",
...
}
]
}
]
您可以看到客户端B已被省略,并且已包含客户端A和客户端C,这是正确的。但是,对于客户端C,只有Tour5属于用户user1。但是,它包括了所有的旅行。我希望我的回复省略Tour5和Tour6,如下所示:
[
{
"name": "Client A",
....
"tours": [
{
"name": "Tour1",
....
},
{
"name": "Tour2",
......
},
{
"name": "Tour3",
.....
}
]
},
{
"name": "Client C",
....
"tours": [
{
"name": "Tour4",
...
}
]
}
]
答案 0 :(得分:1)
我只是猜测,但你尝试过以下方面的事情:
render :json => Client.all(:include => {:tours => :user}, :conditions => ["users.id = ?", params[:user_id]])