Pla*_*Ton 1 activerecord ruby-on-rails
我有一个模型,Project,它有2个关联到同一个模型:
belongs_to :source_connection, class: Connection
belongs_to :destination_connection, class: Connection
Run Code Online (Sandbox Code Playgroud)
这工作正常 - 我可以通过项目访问连接方法没有任何问题.
不过,我对如何做反向感到有些困惑.我开始时相当乐观:
has_one :project
Run Code Online (Sandbox Code Playgroud)
在Connection模型上,毫不奇怪,它抛出了一个
ActiveModel::MissingAttributeError: can't write unknown attribute 'connection_id'
我尝试从连接本身访问项目时出错.
如果有人知道如何在连接方面声明关联,我会很感激.干杯.
协会
您可能最好查看foreign_keyActiveRecord关联的参数:
#app/models/project.rb
Class Project < ActiveRecord::Base
belongs_to :source_connection, class: "Connection", foreign_key: "source_connection_id"
belongs_to :destination_connection, class: "Connection", foreign_key: "destination_connection_id"
end
#app/models/connection.rb
Class Connection < ActiveRecord::Base
has_many :projects, foreign_key: "source_connection_id"
end
Run Code Online (Sandbox Code Playgroud)
您遇到的问题是,由于您没有foreign_key在关联中使用该选项,因此Rails将foreign_key在您的架构中寻找标准关联(通常model_name_id).
-
错误
无法写入未知属性'connection_id'
我不知道它为什么抱怨写作,但原因很可能是你没有为你的协会设置正确的外键.通常情况下,Rails会寻找model_name_id- 但由于你不是,你需要在你的模型中设置相对键(如图所示)
| 归档时间: |
|
| 查看次数: |
1393 次 |
| 最近记录: |