Rails - 无法创建具有与该类同名的属性的记录

时间:2016-05-11 13:18:36

标签: ruby-on-rails activerecord

我在尝试创建(甚至更新)数据库记录时遇到了麻烦,因为父类名称和属性名称都相同。我正在使用统一数据库,所以我不能改变表格。

我有一个具有属性'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记录?

1 个答案:

答案 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,因为第二个仍在访问父记录,而不是属性。