我有一个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
请帮助我,我被困住了。