【发布时间】:2016-05-31 06:34:21
【问题描述】:
您好,我是 Ruby on Rails 开发的新手。我有两个不同型号的查询。我的 first_query 是从问题模型中获取的,第二个查询是从最喜欢的模型中获取的。我想用列 user_favourite 从第二个查询结果映射到第一个查询结果。
这是我的控制器查询
def index
@first_query = Question.order('created_at DESC').page(params[:page]).per( (ENV['ILM_QUESTIONS_PER_PAGE'] || 5).to_i )
@second_query=Favourite.with_user_favourite(@user)
@combined_queries = @first_query + @second_query
end
最喜欢的.rb
scope :with_user_favourite, -> (user) {
joins(:user).
where(favourites: {user_id: user})
}
index.json.builder
json.questions @combined_events
结果的json是
{
questions: [ #this is first query result
{
id: 88,
user_id: 28,
content: "test32",
image: {
url: null,
thumb: {
url: null
},
mobile: {
url: null
}
}
},
{
id: 87,
user_id: 18,
content: "testing riyas",
image: {
url: null,
thumb: {
url: null
},
mobile: {
url: null
}
}
},
{ #this is second query result
id: 1,
user_id: 2,
question_id: 84,
created_at: "2016-05-12T06:51:54.555-04:00",
updated_at: "2016-05-12T06:51:54.555-04:00"
},
{
id: 2,
user_id: 2,
question_id: 81,
created_at: "2016-05-12T07:23:47.770-04:00",
updated_at: "2016-05-12T07:23:47.770-04:00"
}
]
}
我想要这样的回应
{
questions: [
{ #first query result
id: 88,
user_id: 28,
content: "test32",
image: {
url: null,
thumb: {
url: null
},
mobile: {
url: null
}
},
user_favorite: { #corresponding result from second query result
id: 1,
user_id: 2,
question_id: 88
}
},
{ #first query result
id: 87,
user_id: 18,
content: "testing riyas",
image: {
url: null,
thumb: {
url: null
},
mobile: {
url: null
}
},
user_favorite: {} #corresponding result from second query result if there is no result for particular question in favourite table
},
]
}
模型关系是:
class Question
belongs_to :user
has_many :favourite
end
class Favourite
belongs_to :user
belongs_to :question
end
class User
has_many :questions
has_many :favourite
end
【问题讨论】:
-
Question 模型、Favorite 模型和 User 模型之间的关系是什么?
-
添加您的关联
-
in question.rb belongs_to :user has_many :favourite in favourite.rb belongs_to :user belongs_to :question in user.rb has_many :questions has_many :favourite
-
你要么使用 rails 3 要么使用 rails 4 - 不能同时使用。运行
rails --version- 你使用的是什么版本? -
@Riyaskhan 您可以使用问题下方的
edit按钮(直接在这些 cmets 上方)为您的问题添加新信息。请这样做,而不是将代码粘贴到 cmets 中。我已将您的模型关系放在问题中,您应该对包含的任何其他信息执行相同操作。
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4