Ruby on rails 钢轨扭曲连接

Ruby on rails 钢轨扭曲连接,ruby-on-rails,join,activerecord,Ruby On Rails,Join,Activerecord,我已经尝试了两天了,但都失败了:基本上是想得到一个关于喜欢的想法的列表。订购说明为佳 我有很多想法和用户,他们工作得很好 我很头痛。 我可以添加喜欢并检索它们。我还可以找出一个想法有多少人喜欢:idea.likersUser.count 并找出用户是否喜欢某个特定的想法:user.likes?idea 但我不能进行agregates,因为非标准的字段名禁止我进行连接 create_table "likes", force: :cascade do |t| t.string "like

我已经尝试了两天了,但都失败了:基本上是想得到一个关于喜欢的想法的列表。订购说明为佳

我有很多想法和用户,他们工作得很好

我很头痛。 我可以添加喜欢并检索它们。我还可以找出一个想法有多少人喜欢:idea.likersUser.count 并找出用户是否喜欢某个特定的想法:user.likes?idea

但我不能进行agregates,因为非标准的字段名禁止我进行连接

  create_table "likes", force: :cascade do |t|
  t.string   "liker_type"
  t.integer  "liker_id" (this is/should be user_id)
  t.string   "likeable_type"
  t.integer  "likeable_id" (this is/should be idea_id)
  t.datetime "created_at"
  end

  add_index "likes", ["likeable_id", "likeable_type"], name:    "fk_likeables"
  add_index "likes", ["liker_id", "liker_type"], name: "fk_likes"
型号:

like.rb-空 user.rb-按自己的喜好行事 idea.rb-表现得讨人喜欢 有没有一种方法可以将喜欢和想法结合起来,例如,以某种方式将喜欢者的id与用户的id进行匹配?或者我应该将表中的字段liker_id重命名为user_id,likable_id重命名为idea_id。。。?并加入以下内容:

like.rb

belongs_to :user
belongs_to :idea
idea.rb

has_many :likes, dependent: :destroy
user.rb

has_many :likes, dependent: :destroy

提前谢谢

要将另一列指定为联接中使用的外键,可以添加外键:。。。您所属的选项如下所示:

# app/models/like.rb

belongs_to :user, foreign_key: :liker_id
belongs_to :idea, foreign_key: :likeable_id
请参阅有关的参考文档

您还可以自己指定连接条件,如下所示:

Idea.joins('inner join likes on ideas.id = likes.likeable_id').where(...)

谢谢成功了。不幸的是,joins在SQL中使用了一个由created_at创建的顺序,这让我发疯,因为我需要按like_count:Idea.joins'internal join likes on ideas.id=likes.likeable_id.选择'likes.*,count*AS like_count,ideas.title,ideas.intro'。组'likeable_id'。顺序'like_count DESC'默认顺序很可能是由一个错误引起的。请参阅链接文档,了解如何在查询中忽略默认范围。仅此而已!完成。非常感谢你的方式vee!:ps:现在我记得我在模型ps2中设置了默认范围:您看起来不像33: