我在尝试创建(甚至更新)数据库记录时遇到了麻烦,因为父类名称和属性名称都相同。我正在使用统一数据库,所以我不能改变表格。
我有一个具有属性'period'的类Period。一个时期有很多税收标准。
#period model
has_many :tax_scales,
foreign_key: 'period',
primary_key: 'period'
#tax_scale model
belongs_to :period,
foreign_key: :period,
primary_key: :period
所以,当我在tax_scale视图中使用它时:
#new.html.haml
= f.label :period
= f.number_field :period
我收到此错误:
预期期间(#97477176),得到字符串(#8598408)
我的控制器参数是:
params.require(:tax_scale).permit(:minimum, :maximum, ..., :period)
如何成功编辑(或创建)tax_scale记录?
答案 0 :(得分:0)
我找到了解决方案:使用self [:attribute]的方法,以确保访问属性
#tax_scale model
def current_period
self[:period]
end
def current_period=(p)
self[:period] = p
end
#new.html.haml
= f.label :current_period
= f.number_field :current_period
注意我必须使用self [:period]而不是self.period,因为第二个仍在访问父记录,而不是属性。