我希望用户能够关闭项目而不是销毁它们。我想将紧密的原因存储在项目本身的单独表格中。我正在尝试通过关联的模型来完成此操作。使用“where”关联has_one和belongs_to模型
class Project < ApplicationRecord
belongs_to :project_status
has_one :project_close_reason, -> { where 'project_status_id = 10'}
end
class ProjectCloseReason < ApplicationRecord
belongs_to :projects
end
class ProjectStatus < ApplicationRecord
has_one :project
end
我只想ProjectCloseReason当用户取消一个项目(这需要改变project_status_id在项目为“10”)。但是,当我现在创建一个新项目时,它不断给我一个错误,即项目关闭原因必须存在。任何想法如何实现?以上{ where... }
在这种情况下似乎不起作用?
UPDATE
澄清我的协会,project_status
模型状态的预定义列表:
(如:1:待定,2:分析,3:工作,...,10:取消)。
foreign_key坐在项目模型中,以便每个项目都有一个project_status_id - >这个foreign_key列是我在项目模型关联中的{ where... }
选项中提到的。
你是否为项目设置了默认的项目状态值?我猜设置默认值为0将解决问题 –
谢谢我已经添加了一个默认值,但它仍然返回相同的错误 – Stephen
project.project_status_id总是0?当你创建一个项目? –