before_filter在创建之前设置主键

时间:2012-03-05 12:00:44

标签: ruby-on-rails

我在保存之前使用过滤器来设置实例的主键。

这是我的控制器方法:

class ReferencesController < ApplicationController

before_filter :set_primary_key, :only => [:create_sub_reference]

    def create_sub_reference    
    @reference = Reference.new(params[:reference])
    respond_to do |format|
    if @reference.save
      format.js
    else
      flash[:notice] = "Reference failed to save."
    end
    end
    end


    private

    def set_primary_key
    result = ActiveRecord::Base.connection.execute('SELECT REF_ID FROM SEQUENCES')
    inc_result = (result.fetch_row.first)
    self.REF_ID = inc_result
    end

    end 

end

当我点击“保存按钮”时,我在日志文件中收到以下错误消息:

NoMethodError (undefined method `REF_ID=' for #<ReferencesController:0xb69f4ca8>):

感谢您就此事提出任何建议

1 个答案:

答案 0 :(得分:1)

您正在尝试在Controller上设置REF_ID属性(我假设它是一个数据库列),而不是您的模型。每当ReferencesController的网络请求到达您的应用时,都会调用该代码。

也许您想将逻辑移到before_create模型中的References挂钩?

相关问题