2012-01-25 21 views
1

的Rails 3.1 红宝石1.9.2p290(2011-07-09)[I386-的mingw32] sqlite3的创建被属性转换为nil和更新不生成SQL UPDATE语句

我有一个名为用例模型那不是正确创建或更新。当我创建一个新记录时,文本列被设置为零,并且基于选择值的整数值被捕获。在用户提供的输入字段中也有一个整数值,它被设置为nil。

当我尝试更新时,日志显示没有创建或执行sql输入语句。我能够创建新记录并从控制台正确更新它们。

这里是机型代码(注意所有验证已被删除):

class Usecase < ActiveRecord::Base 
attr_accessible :due_at, :failure_end_condition, :frequency, :level_id, :number, :performance_target, 
       :primary_actor_id, :priority_id, :profile_id, :project_id, :purpose, :success_end_condition, 
       :title, :trigger, :usecase_status_id 
has_many :actor_assignments 
has_many :actors, :through => :actor_assignments 
has_many :pre_conditions 
has_many :post_conditions 
has_many :usecase_as_conditions 
has_many :scenarios 
has_many :variations 
belongs_to :profile 
belongs_to :project 
belongs_to :usecase_status 

这里是控制器代码:类UsecasesController < ApplicationController的

def new 
    @usecase = Usecase.new 
    @usecase.profile_id = current_user.profile.id 
    @usecase.set_defaults(current_user.profile.default_project_id) 
    respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @usecase } 
    end 
end 

def edit 
    @usecase = Usecase.find(params[:id]) 
    respond_to do |format| 
    format.html {render "edit"} 
    format.json { render json: @usecase } 
    end 
end 

def create 
    @usecase = Usecase.new(params[:usecases]) 
    respond_to do |format| 
    if @usecase.save 
     format.html { redirect_to [:edit, @usecase], notice: 'Usecase was successfully created.' } 
     format.json { render json: @usecase, status: :created, location: @usecase } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @usecase.errors, status: :unprocessable_entity } 
    end 
    end 
end 

def update 
    @usecase = Usecase.find(params[:id]) 

    respond_to do |format| 
    if @usecase.update_attributes(params[:usecases]) 
     format.html { redirect_to @usecase, notice: 'Usecase was successfully updated.' } 
     format.json { head :ok} 
    else 
     format.html { render action: "edit" } 
     format.json { render json: @usecase.errors, status: :unprocessable_entity } 
    end 
    end 
end 

日志中的新记录插入(注对于接收到的参数:标题具有值,但是在INSERT语句是零

Started POST "/usecases" for 127.0.0.1 at 2012-01-24 14:50:40 -0800 
    Processing by UsecasesController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"Uscho1j5FCsbdRUhTyg/Ji79yyPwyMRZUcyiWYtSw54=", 
    "usecase"=>{"number"=>"1", "title"=>"Create New Record", "due_at"=>"2012-02-07"}, "usecases"=>{"project_id"=>"2", 
       "usecase_status_id"=>"1", "profile_id"=>"3"}, "commit"=>"Create Usecase"} 
    [1m[36mSQL (3.0ms)[0m [1m 
INSERT INTO "usecases" ("created_at", "due_at", "failure_end_condition", "frequency", "level_id", "lock_version", 
         "number", "performance_target", "primary_actor_id", "priority_id", "profile_id", "project_id", 
         "purpose", "success_end_condition", "title", "trigger", "updated_at", "usecase_status_id") 
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)[0m 
[["created_at", Tue, 24 Jan 2012 22:50:40 UTC +00:00], ["due_at", nil], ["failure_end_condition", nil], ["frequency", nil], ["level_id", nil], 
    ["lock_version", 0], ["number", nil], ["performance_target", nil], ["primary_actor_id", nil], ["priority_id", nil], ["profile_id", 3], 
    ["project_id", 2], ["purpose", nil], ["success_end_condition", nil], ["title", nil], ["trigger", nil], 
    ["updated_at", Tue, 24 Jan 2012 22:50:40 UTC +00:00], ["usecase_status_id", 1]] 
Redirected to http://localhost:3000/usecases/2/edit 
Completed 302 Found in 71ms 
。 210

日志的更新(注意没有创建UPDATE SQL语句)

Started PUT "/usecases/2" for 127.0.0.1 at 2012-01-24 14:57:04 -0800 
    Processing by UsecasesController#update as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"Uscho1j5FCsbdRUhTyg/Ji79yyPwyMRZUcyiWYtSw54=", "usecase"=>{"number"=>"1", "project_id"=>"2", 
       "title"=>"Update Row With New Title", "usecase_status_id"=>"1", "due_at"=>"2012-01-28", "profile_id"=>"3"}, "commit"=>"Update Usecase", "id"=>"2"} 
    [1m[36mUsecase Load (0.0ms)[0m [1mSELECT "usecases".* FROM "usecases" WHERE "usecases"."id" = ? LIMIT 1[0m [["id", "2"]] 
    [1m[35mProject Load (1.0ms)[0m SELECT "projects".* FROM "projects" ORDER BY title ASC 
    [1m[36mUsecaseStatus Load (1.0ms)[0m [1mSELECT "usecase_statuses".* FROM "usecase_statuses" ORDER BY rank ASC[0m 
    [1m[35mProfile Load (0.0ms)[0m SELECT "profiles".* FROM "profiles" ORDER BY last_name ASC, first_name ASC 
Rendered usecases/test.html.erb within layouts/application (147.0ms) 
Rendered layouts/_stylesheets.html.erb (2.0ms) 
    [1m[36mUser Load (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = 3 LIMIT 1[0m 
    [1m[35mProfile Load (1.0ms)[0m SELECT "profiles".* FROM "profiles" WHERE "profiles"."user_id" = 3 LIMIT 1 
    [1m[36mAccount Load (0.0ms)[0m [1mSELECT "accounts".* FROM "accounts" WHERE "accounts"."id" = 3 LIMIT 1[0m 
Rendered layouts/_header.html.erb (330.0ms) 
Rendered layouts/_footer.html.erb (0.0ms) 
Completed 200 OK in 674ms (Views: 614.0ms | ActiveRecord: 7.0ms) 

感谢您看这个。

回答

0

难道不该分别 @usecase = Usecase.new(params[:usecase])if @usecase.update_attributes(params[:usecase])

希望修复它。

+0

这是修复。非常感谢你。 –