我有一个多态模型;结果,belongs_to result_table, polymorphic: true
与其他两个模型一起使用;团队和运动,通过一对一的关系及其工作。由于一对一的关系,我有一个回调函数after_create :build_result_table
,我在设置和保存数据库结果表中的result_table_id
和result_table_type
时使用它。我遇到的问题是输入保存在result_table_type
,它的VARCHAR,但似乎是将输入保存为整数
def build_result_table
Result.create(result_table_id: self.id, result_table_type: self)
end
我认为问题可能在于result_table_type: self
,但我尝试result_table_type: self.class.name
来保存类的名称,但它引发了错误。关于在result_table_type
列中保存唯一值的任何建议..
修改
我正在添加所涉及的模型,虽然我已经按照@Mohammad在评论中手动完成了保存,但也会感激,如果我可以显示我如何可以请求rails自动保存值。
APP /型号/ SPORT.RB
class Sport < ActiveRecord::Base
attr_accessible :sport_name, :sport_id, :result_attributes, :result_table_id
has_one :result, as: :result_table
after_create :build_result_table
accepts_nested_attributes_for :result
def build_result_table
Result.create(result_table_id: self.id, result_table_type: self.class.name)
end
end
APP /型号/ TEAM.RB
class Team < ActiveRecord::Base
has_one :result, as: :result_table
attr_accessible :teamname, :color, :result_attributes
after_create :build_result_table
accepts_nested_attributes_for :result
def build_result_table
Result.create(result_table_id: self.id, result_table_type: self.class.name)
end
end
APP /型号/ RESULT.RB
class Result < ActiveRecord::Base
attr_accessible :sport_id,:team_id, :result_table_id, :result_table_type
belongs_to :result_table, polymorphic: true
end
答案 0 :(得分:0)
# Either one of these
Result.create(result_table: self)
Result.create(result_table_id: self.id, result_table_type: self.class.to_s)