因此,在我的模型中,法官与项目有关:
class Judge < ApplicationRecord
has_and_belongs_to_many :projects
# ...
end
class Project < ApplicationRecord
has_and_belongs_to_many :judges
# ...
end,在SQL中表示为
CREATE TABLE public.judges_projects (
judge_id bigint NOT NULL,
project_id bigint NOT NULL
);现在我需要能够增加评委对他们所评价的项目的反馈。我编写了一个简单的迁移(add_column :judges_projects, :feedback, :string, default: ''),它生成了这个修改后的SQL:
CREATE TABLE public.judges_projects (
judge_id bigint NOT NULL,
project_id bigint NOT NULL,
feedback character varying DEFAULT ''::character varying
);如何在不破坏现有评审和项目的情况下重构模型以包括附加字段
发布于 2022-03-21 18:22:30
它既不会破坏裁判也不会破坏项目。你可以好好利用它。
但是,如果您想获得feedback,您需要为judges_projects建立一个模型,因为它不是一个简单的联接表。
class Judge < ApplicationRecord
has_many :judges_projects
has_many :projects, through: :judges_projects
# ...
end
class Project < ApplicationRecord
has_many :judges_projects
has_many :judges, through :judges_projects
end
# You might want to rename the table to something more
# descriptive.
class JudgesProject < ApplicationRecord
belongs_to :judge
belongs_to :project
end你可以去找judge.judges_projects.first.feedback。
https://stackoverflow.com/questions/71561731
复制相似问题