• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

默认belongs_to的关联值

associations 来源:Tanweer Shahzaad 3次浏览

工作模式默认belongs_to的关联值

schema "jobs" do 
    belongs_to :status, Test.JobStatus, 
    foreign_key: :status_id, 
    references: :id, 
    type: :string 
    timestamps() 
end 

,我有一个状态型号为:

@primary_key {:id, :string, autogenerate: false} 
schema "job_statuses" do 
    field :title, :string 
    field :description, :string 
end 

当我将这份工作,我需要把默认的工作状态(如果它不是在PARAMS )。我知道belongs_to关联中的默认值,但这可能是在您分配关系时分配默认值。任何人都可以指出我可以如何为任何新创建的作业设置默认状态(假设作业状态ID为“acitve”且其已存在于数据库中)。样品已经在这里https://github.com/tanweerdev/jobs

克隆项目后,只是这样做

Interactive Elixir (1.5.2) - press Ctrl+C to exit (type h() ENTER for help) 
iex(1)> Test.Jobs.create_job_status() 
iex(2)> Test.Jobs.test_default_status() 

(Postgrex.Error)ERROR 23502(not_null_violation):在 列 “STATUS_ID” 空值违反非空限制


===========解决方案如下:

你可以把默认的迁移和定义的关联字段设置为read_after_writes: true。这将确保在插入记录后,该字段将从数据库读回,这将解决您在评论中提到的问题,即在成功插入记录后字段仍为nil

belongs_to :status, Test.JobStatus, 
    foreign_key: :status_id, 
    references: :id, 
    type: :string, 
    define_field: false 

field :status_id, :integer, read_after_writes: true 

define_fieldhere和read_after_writeshere退房的文档了解更多信息。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)