从我的客户端,我发送一个与其他对象相关的对象:
var data = { "comment": result.comment, "doc": { "id": result.doc.id } "site": { "url": result.site.url } }; $.ajax({ url: '/data', type: 'POST', data: data });
这会发布到我的/data
控制器。在create
方法中,我有这段代码:
def create @data = Data.new(params[:data]) @data.user_id = current_user.id respond_to do |format| if @data.save @doc = Doc.find_or_create_by_id(params[:doc]) @doc.save @site = Site.new(params[:site]) @site.doc_id = @doc.id @site.save format.html //stuff format.json //stuff format.js //stuff end end
我很好奇我是否正确接近这个问题。对于像我这样的相关对象,控制器看起来非常“重”。
那里有没有其他解决方案?
修改
数据模型:
class Data belongs_to :site, :polymorphic => true belongs_to :user end
答案 0 :(得分:2)
您的数据模型如何?你有所有嵌套属性的赋值方法吗?
def create
@data = Data.new(params[:data])
@data.user = current_user
respond_to do |format|
if @data.save
@doc = Doc.find_or_create_by_id(params[:doc][:id])
@site = @doc.sites.create(params[:site])
format.html //stuff
format.json //stuff
format.js //stuff
end
end
您可以在Rails Guides。
中查看有关Active Record Relations的更多详细信息