Rails,使用ID初始化对象并保留它

时间:2019-04-23 16:42:56

标签: ruby-on-rails

大家好,我试图弄清楚如何处理这种情况。

我有一个模特

Class Content < Activerecord

 has_many                :elements
 has_many                :assets, :dependent => :destroy

end

我有一个表格,当然在我的控制器中

def new
 @content = Content.new
end

让我们来“资产”。 素材资源是js,css之类的文件,我在表单内使用了一个jQuery小部件来上传它们。

元素很容易形成表单:我在“新表单”中创建它们。

在控制器中的实际应用中,我使用

def new
 @content = Content.create
end

我创建并保存所有内容到db上,所以我有一个ID,然后使用该ID通过jquery小部件上载资产,并使用ajax发布创建页面。

使用“ Content.new”,我没有任何ID,我初始化了内容模型,也没有任何ID。

有什么解决方法吗?是否可以使用ID进行初始化并保留该ID以避免覆盖?还是我必须更改界面?

2 个答案:

答案 0 :(得分:0)

如果您的内容将属于某个其他模型,则可以创建一个具有ID的对象!

Class Content < Activerecord
 belongs_to :user
 has_many                :elements
 has_many                :assets, :dependent => :destroy

end

Class User < Activerecord
  has_many :contents
end

Content.create(user_id: 1)

will return
#<Content id: 10008, user_id: 1 >

答案 1 :(得分:0)

保存空内容以创建空记录或将记录保留在数据库中。

def new
 @content = Content.create
 @content.save!
end

但是请注意,如果您要在数据库中保留ID /记录,则由于某种原因您的表单将失败,则需要销毁它。或者在失败时保留空白记录。