Ruby on Rails:如何在ActiveRecord查询中包含计算值?

时间:2018-08-16 03:28:35

标签: ruby-on-rails activerecord

我有一个UserResource模型,此模型具有has_many点赞,点赞属于一个User。我只是希望能够获得UserResource对象的列表,其中包含其“名称”和“ id”属性,以及一个名为“ liked”的属性,用于说明当前用户是否喜欢UserResource实例。

到目前为止,我已经尝试了很多不同的东西,而唯一可以做到的是:

user = current_user
UserResource.all.joins(:likes).select(:name, :id, "#{user.id} = like.user_id as liked").distinct

以下是UserResources和Likes表的架构:

  create_table "likes", force: :cascade do |t|
    t.bigint "user_resource_id"
    t.bigint "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "name"
    t.index ["user_id"], name: "index_likes_on_user_id"
    t.index ["user_resource_id"], name: "index_likes_on_user_resource_id"
  end

  create_table "user_resources", force: :cascade do |t|
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.bigint "user_id"
    t.string "privacy"
    t.string "name"
    t.string "resourceable_type"
    t.bigint "resourceable_id"
    t.index ["resourceable_type", "resourceable_id"], name: "index_user_resources_on_resourceable_type_and_resourceable_id"
    t.index ["user_id"], name: "index_user_resources_on_user_id"
  end

这是涉及对象的模型:

class User < ApplicationRecord
  has_many :user_resources
end

class UserResource < ApplicationRecord
  belongs_to :user
end

class Like < ApplicationRecord
  belongs_to :resource, class_name: 'UserResource', foreign_key: 'user_resource_id'
  belongs_to :user
end

请帮助我,我被困住了。

0 个答案:

没有答案