rails 4从关联创建新的模型对象

时间:2014-03-30 10:35:48

标签: object activerecord ruby-on-rails-4 model-associations

我正在使用rails 4而我正在尝试创建一个带有关联的新模型对象,这里是我的db文件

class CreateClients < ActiveRecord::Migration
  def change
    create_table :clients do |t|
      t.string :nume
      t.string :nrtel
      t.string :email
      t.string :datan
      t.string :var
      t.string :var1
      t.string :var2
      t.string :var3
      t.string :var4
      t.string :var5

      t.timestamps
    end
  end
end
class CreateProgs < ActiveRecord::Migration
  def change
    create_table :progs do |t|
      t.string :data
      t.string :descriere
      t.string :status
      t.string :var
      t.string :var1
      t.string :var2
      t.string :var3
      t.string :var4
      t.string :var5


      t.timestamps
    end
  end
end
class AddClientidToProgs < ActiveRecord::Migration
  def change
    add_column :progs, :clientid, :integer
  end
end

并且在progs控制器中,新方法看起来像这样

def new
    #@client = Client.find(params[:client_id])
    c = Client.new
    @prog = c.progs.build

  end

我收到此错误:

未知属性:client_id

提取的来源(第19行): 17 18 19 20 21 22

#@client = Client.find(params[:client_id])
c = Client.new
@prog = c.progs.build

Rails.root:/ home / salon

应用程序跟踪|框架跟踪|完整追踪 app / controllers / progs_controller.rb:19:在'new'中 请求

参数:

{"client_id"=>"1"}

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

首先应在clientprogs之间设置关联。

class AddClientidToProgs < ActiveRecord::Migration 
   def change add_column :progs, :client_id, :integer 
   end 
end

你写错了&#34; clientid&#34;。

两件事是关联应该像

client class
    has_many :progs

prog class
   belongs_to client

最后:

@client = Client.find(params[:client_id])
prog = @client.progs.build # or @client.progs.new

上面的命令会在client_id对象中设置prog