我正在尝试使用全局ID来指定多态关联。但是,当我想通过关联引用对象时,找不到任何对象。
请考虑以下模型:
class Person < ActiveRecord::Base
has_many :optionees, as: :entity
belongs_to :company
end
和
class Optionee < ActiveRecord::Base
belongs_to :entity, polymorphic: true
belongs_to :option
end
如果我按照以下方式播种:
Person.create(fname: "John", lname:"Smith", email:"john.smith@email.com", telephone:"555-555-5555", street:"333 Street St", city:"Salt Lake City", state:"UT", zip:"99999", company_id:"1")
(给人1的身份证明) 和
Optionee.create total_shares: "332", exercise_price: "33.22" option_id: "1" entity_id: "gid://legal/Person/1"
(给予Optionee ID为1)
我无法使用以下命令查找此人:
Optionee.find(1).entity
相反,它给了我一个nill的结果。
我意识到做多态关联的传统方法是提供模型名称AND id;有什么东西我用全球ID来做这件事吗?非常感谢提前。
答案 0 :(得分:-1)
您还需要在Optionee表中添加entity_type。如果person id为1,则entity_id等于1: -
Optionee.create total_shares: "332", exercise_price: "33.22" option_id: "1" entity_id: "1", entity_type: "Person"
或者您可以通过以下方式为选项表中的人创建记录: -
@person = Person.find(params[:id])
@person.optionees.create(params)
它将为person设置entity_id和entity_type。通过这样做,不需要显式设置entity_id和entity_type。