在rails中保存数据时手动设置主键的值

时间:2011-11-01 14:48:31

标签: ruby-on-rails

在我的rails应用程序中,我正在使用旧数据库。

class Expression < ActiveRecord::Base
set_table_name "EXPRESSION"
set_primary_key "EXP_ID"

belongs_to :sub, :foreign_key => "EXP_SUB_FK"

end

要在'EXPRESSION'表中保存一个条目,我在控制器方法中使用以下代码:

@expression = Expression.create(
                        :EXP_ID => 7,
                        :EXP_SUB_FK => 99991886,
                        :EXP_STRENGTH => 'strong',
                        :EXP_ADDITIONAL_STRENGTH => 'intense',
                        :EXP_COMPONENT_ID => 43444
                       )

每次保存条目时我都必须手动设置EXP_ID(我将从另一个表中获取id),但上面的代码不保存EXP_ID。除EXP_ID外,将保存所有其他值。

如果我在Expression模型中注释掉'set_primary_key“EXP_ID”',它可以工作但我需要将EXP_ID定义为主键。 在将数据库保存到dbase时,有没有办法为主键分配值?

如果有人能给我一些提示,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

EXP_ID模型中定义的before_save过滤器中设置Expression

<强>更新

添加样本:

before_save :set_exp_id
def set_exp_id
  self.exp_id = 5555555
end