查询包括Tweet主演

时间:2015-10-07 21:48:26

标签: sql ruby-on-rails postgresql activerecord

假设正在使用以下数据库架构构建Twitter克隆:

User
- id

Tweet
- id
- user_id

Star
- id
- tweet_id
- user_id

在这种情况下,用户有很多推文,每条推文都有很多星星,每颗星都属于一个用户。

使用Rails的Active Record,可以构建一个查询来检索所有Tweet对象,并包括当前用户是否创建了一个星?

寻找与此相似的回复:

Tweet
- id
- user_id
- starred (true)
Tweet
- id
- user_id
- starred (false)
Tweet
- id
- user_id
- starred (true)

1 个答案:

答案 0 :(得分:0)

tweet.rb

def starred?
   star.present?
end

def self.tweets_with_stars
  hash = Hash.new()
  all.each do |t|
    hash[t.id] = [tweet: t.id, user_id: t.user_id, starred: t.starred?]
  end
  return hash
end

在你看来。

 <% Tweet.tweets_with_stars.each do |key, value| %>
   Tweet ID: <%= key %><br>
   User ID: <%= value[0][:user_id] %><br>
   Starred: <%= value[0][:starred] %> <br>
 <% end %>