【问题标题】:Ruby on Rails: How to structure a has_many, through association when join model uses a belongs_toRuby on Rails:当连接模型使用belongs_to时,如何通过关联来构造has_many
【发布时间】:2017-09-25 23:10:00
【问题描述】:

当连接模型使用belongs_to时,我正在尝试通过关联创建一个has_many。

这里的例子:

class User
  has_many :projects, through: :project_memberships
end

class ProjectMembership
  belongs_to :project
end

class Project
  has_many :project_memberships
end

Rails 告诉我此关联无效。如果在此处无法使用 :through 关联,那么使用 ActiveRecord 访问用户拥有成员资格的所有项目的最佳方式是什么?

【问题讨论】:

    标签: ruby-on-rails activerecord associations


    【解决方案1】:

    用户必须与ProjectMembership相关,例如:

    class User
      has_many :project_memberships
      has_many :projects, through: :project_memberships
    end
    
    class ProjectMembership
      belongs_to :project
      belongs_to :user
    end
    
    class Project
      has_many :project_memberships
    end
    

    查看here 了解有关关联的更多信息。

    【讨论】:

    • ActiveRecord::StatementInvalid: PG::UndefinedFunction: ERROR: operator does not exist: integer = character changed LINE 1: ...NER JOIN "project_memberships" ON "projects"."id" = "项目... ^ 提示:没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换。:SELECT "projects".* FROM "projects" INNER JOIN "project_memberships" ON "projects"。 "id" = "project_memberships"."project_id" WHERE "project_memberships"."user_id" = $1
    • 这是我在更新代码时遇到的错误。知道问题可能是什么吗?
    • 想通了。我将我的 ID 存储为字符串(哎呀!)。感谢您的帮助
    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多